2016-08-18 2 views
2

Ich habe versucht, den folgenden Fehler für mehrere Stunden ohne Lösung zu debuggen (Ich möchte die Tastatur in zwei Hälften brechen). Bitte helfen Sie. Ich brauche es.ASP.NET JavaScript Funktion undefined

<asp:Button ID="btnCalculate" runat="server" Text="Calculate" OnClientClick="callAjaxMethod()"/> 

The JS:

function callAjaxMethod() 
{ 

    // e.preventDefault(); 

    $.ajax({ 
     type: "POST", 
     url: "SimpleAjax.asmx/IsLeapYear", 
     data: '{year: "' + $("#<%=txtYear.ClientID%>").val() + '" }', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      if (response.d) { 
       $('#<%=txtResult.ClientID%>').val('Leap Year'); 
      } 
      else { 
       $('#<%=txtResult.ClientID%>').val('Not a Leap Year'); 
      } 
     }, 
     failure: function (response) { 
      $('#<%=txtResult.ClientID%>').val("Error in calling Ajax:" + response.d); 
     } 
    }); 
} 

-Code aus der ASMX-Datei:

Unhandled exception at line 90, column 95 in http://localhost:51770/SimpleAjax.aspx

0x800a1391 - JavaScript runtime error: 'callAjaxMethod' is undefined

Diese Methode von einer Schaltfläche auf einer Seite wird genannt

/// Summary description for SimpleAjax 
    /// </summary> 
    [WebService(Namespace = "http://automatedpumpcontroller.somee.com/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService] 
    public class SimpleAjax : System.Web.Services.WebService 
    { 

     [WebMethod] 
     [System.Web.Script.Services.ScriptMethod()] 

     public static bool IsLeapYear(int year) 
     { 
      return DateTime.IsLeapYear(year); 
     } 
    } 
} 
+0

Gibt es einen anderen Javascript-Code innerhalb der 'script' blockieren? Manchmal ist eine Funktion aufgrund eines Problems in einem anderen Teil des Client-Codes nicht definiert. – ConnorsFan

+0

Wie überprüfe ich das in VS 2015? –

+0

Wenn 'callAjaxMethod' in einem 'script'-Block ist, gibt es irgendeinen anderen Code innerhalb desselben Blocks? – ConnorsFan

Antwort

0

Wenn sich Ihre Funktion callAjaxMethod in einer separaten js-Datei befindet, müssen Sie diese Datei auf Ihrer Seite wie folgt einfügen:

z. Js-Datei mit dem Namen auf js gehalten \ app.js und Ihrer Seite ist SimpleAjax.aspx

dann auf SimpleAjax.aspx müssen Sie Skript-Tag in Kopf

<script src="js\app.js"></script> 
+0

Das funktioniert, indem Sie das Skript zum Masterseitenkopf hinzufügen. Aber jetzt bekomme diesen Fehler. Nicht behandelte Ausnahme in Zeile 1864, Spalte 2 in http: // localhost: 51770/Skripte/jquery-1.10.2.js 0x800a139e - JavaScript-Laufzeitfehler: Syntaxfehler, nicht erkannter Ausdruck: # <% = txtYear.ClientID%> –

+0

Ja, es sollte sein, weil Sie das ASP-Server-Tag in der js-Datei <%= %> nicht verwenden können, kann es auf aspx-Seite selbst verwendet werden. Dazu müssen Sie Ihre Funktion auf Ihrer aspx-Seite selbst einfügen, oder Sie müssen den Selektor, der den Server-Tag verwendet, durch einen jquery-Selektor wie diesen ersetzen. $ ("[Id $ = 'txtYear']") ** –

0

Ich denke, Ihr Problem hinzuzufügen, ist mit Referenz von JS. Hast du JS aufgenommen?

function callAjaxMethod() { 
 
    alert('in'); 
 
}

 
<input type="button" id="btn" onclick="callAjaxMethod();" />

+0

Hinzugefügt die Referenz im Master. Jetzt erhalten Sie diesen Fehler: Nicht behandelte Ausnahme in Zeile 1864, Spalte 2 in http: // localhost: 51770/Skripte/jquery-1.10.2.js 0x800a139e - JavaScript-Laufzeitfehler: Syntaxfehler, nicht erkannte Ausdruck: # <% = txtYear .ClientID%> –

+0

$ ("# <% = txtYear.ClientID%>"). Val() was bekommen Sie hier? –

+0

Das Jahr, das in einem Textfeld ist –