2013-07-15 14 views
5

Mam pole tekstowe i przycisk obok niego. Chcę wysłać zawartość pola tekstowego przez wywołanie ajax Jquery do webmethod i odzyskać wielką wartość tego samego i wyświetlić w alert. Do tej pory mam ten kod, ale nie działa.Jak wysłać i pobrać dane z metody internetowej za pomocą wywołania JQuery Ajax?

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> 

METODA WEB:

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

jaki jest komunikat o błędzie konsola otrzymujesz? –

+0

Uncaught ReferenceError: odpowiedź nie jest zdefiniowana – Arbaaz

+1

ok, jak wspomniał Darin, użyj JSON.stringify (name) –

Odpowiedz

2

Jak na swoim komentarzu zrozumiałem Twój problem jeszcze nie rozwiązany, więc po prostu spróbować tego

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

Identyczny błąd Uncaught ReferenceError: odpowiedź nie jest zdefiniowana Chyba szukamy problemu w niewłaściwym miejscu. Wiem, że to musi być coś głupiego, próbuję dowiedzieć się, co jest przyczyną tego błędu. – Arbaaz

4

Wymienić:

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

z:

data: { name: JSON.stringify(name) }, 

w celu zapewnienia właściwego kodowania. W tej chwili wysyłasz następujący ładunek:

{name:'some value'} 

co jest oczywiście nieprawidłowym ładunkiem JSON. W JSON wszystko powinno być podwójnie cytowany:

{"name":"some value"} 

To jest powód, dlaczego należy absolutnie nie budować JSON ręcznie z niektórych powiązań, strunowych, ale przy użyciu wbudowanych metod do tego (JSON.stringify).

Uwaga boczna: Nie jestem pewien, czy istnieje wywołanie zwrotne o nazwie failure, które rozumie metoda failure. Więc:

$.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); 
    } 
}); 

zauważyć również, że w swojej zwrotnego błędu usunąłem właściwość response.d jakby istnieje wyjątek w swoich internetowych metody są szanse, że serwer nie zwróci żadnych JSON w ogóle.

+0

Tylko do dalszego budowania, zobacz [Jaka jest różnica między JSON i Object Literal Notation?] (Http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal -notacja) –

+0

Darin jest poprawny, nie ma wywołań "niepowodzenia" dla metody 'jQuery.ajax()'. –

+0

Doskonała odpowiedź. – bluetoft

Powiązane problemy