2013-07-15 8 views
5

Ich habe ein Textfeld und eine Schaltfläche daneben. Ich möchte den Inhalt der Textbox über Jquery Ajax Anruf an Webmethod senden und den Großbuchstabe des selben zurückbekommen und diesen im Alarm anzeigen. Bisher habe ich diesen Code, aber es funktioniert nicht.So senden und rufen Sie Daten aus der Webmethode mit JQuery Ajax Call ab?

javascript:

function CallWM() 
    {   

     var name = $('#name').val();   


     RealCallWM(name); 


    } 
    function RealCallWM(name) { 

     $.ajax({ 
      url: 'Register.aspx/UpperWM', 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      data: { name: JSON.stringify(name) }, 
      success: OnSuccess(response), 
      error: function (response) { 
       alert(response.responseText); 
      } 
     }) 
    }; 

HTML:

Name: <input id="name" type="text" /> 
<input id="Button1" type="button" value="button" onclick="CallWM();"/></div> 
    </form> 

Web-Methode:

[WebMethod] 
     public static string UpperWM(string name) 
     { 
      var msg=name.ToUpper(); 
      return (msg); 
     } 
+2

, was die Nachricht, die Sie Konsole Fehler zu bekommen? –

+0

Uncaught ReferenceError: Antwort ist nicht definiert – Arbaaz

+1

ok, wie Darin erwähnt, benutze JSON.stringify (name) –

Antwort

2

Wie pro Ihren Kommentar verstand ich das Problem noch nicht gelöst, so versuchen Sie einfach diesen

function RealCallWM(name) { 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/UpperWM", 
      data: JSON.stringify({ name: $('#name').val() }), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      async: true, 
      success: function (data, status) { 
       console.log("CallWM"); 
       alert(data.d); 
      },    
      failure: function (data) { 
       alert(data.d); 
      }, 
      error: function (data) { 
       alert(data.d); 
      } 
     }); 
    } 
+0

Gleicher Fehler Uncaught ReferenceError: Antwort ist nicht definiert Ich denke, wir suchen nach einem Problem an der falschen Stelle. Ich weiß, dass es etwas albern sein muss, ich versuche herauszufinden, was diesen Fehler verursacht. – Arbaaz

4

ersetzen:

data: '{name: ' + name + '}', 

mit:

, um eine ordnungsgemäße Codierung zu gewährleisten. Jetzt senden Sie die folgende Nutzlast:

{name:'some value'} 

die offensichtlich eine ungültige JSON Nutzlast ist. In JSON alles doppelt angegeben werden soll:

{"name":"some value"} 

, dass der Grund ist, warum sollten Sie absolut nie JSON manuell mit einigen Zeichenfolge Verkettungen bauen, aber die integrierten Methoden für die (JSON.stringify) verwendet wird.

Seitliche Anmerkung: Ich bin mir nicht sicher, ob es einen Rückruf namens failure gibt, den die $.ajax Methode versteht. Also:

$.ajax({ 
    url: 'Register.aspx/UpperWM', 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    data: { name: JSON.stringify(name) }, 
    success: OnSuccess(response), 
    error: function (response) {       
     alert(response.responseText); 
    } 
}); 

Beachten Sie auch, dass in dem Fehler Rückruf ich die response.d Eigenschaft entfernt habe, als ob es eine Ausnahme in Ihren Web-Methode ist die Chancen, dass der Server keine JSON überhaupt zurück.

+0

Nur für weitere Erbauung, siehe [Was ist der Unterschied zwischen JSON und Object Literal Notation?] (Http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal -notation) –

+0

Das ist richtig, es gibt keinen 'failure' Callback für die' jQuery.ajax() 'Methode. –

+0

Ausgezeichnete Antwort. – bluetoft

Verwandte Themen