2013-10-24 21 views
7

Witam, jestem nowy w JSON. Moje pytanie brzmi: jak przekazywać dane JSON do realnych usług internetowych przez ajax?jak przekazać dane JSON do restful internetowych usług przez ajax, a także jak uzyskać dane JSON?

Proszę mi pomóc.

Próbowałem przez następujący kod, ale nie jestem pewien co to

mojej stronie INDEX

<script type="text/javascript"> 

$(document).ready(function(){ 

    var uname = document.getElementById("uname").value(); 
    var password = document.getElementById("pwd").value(); 


    $('#ok').click(function(){ 
     $.ajax({ 
      url:'http://localhost:8090/LoginAuthRWS/rest/orders', 
      type:'post', 
      dataType: 'Jsondemo', 


      success: function(data) { 
       $('#name').val(data.name); 
       $('#email').val(data.email); 

       var JSONObject= { 
         "uname":uname, 
         "password":password 
         }; 
      } 
     }); 
    }); 
}); 

</script> 

Odpowiedz

9
var JSONObject= {"uname":uname, "password":password }; 
var jsonData = JSON.parse(JSONObject);  

var request = $.ajax({ 
    url: "rest/orders", 
    type: "POST", 
    data: jsonData, 
    dataType: "json" 
});   
+0

Dzięki Ur Pomoc Arvind –

+0

przy użyciu JSON.stringify zwraca ciąg json reprezentujący obiekt javascript. JSON.parse konwertuje ciąg znaków do obiektu javascript – micha

+2

Tęskniłeś contentType: 'application/json' – Arashsoft

1

Chcesz zrobić coś takiego:

$('#ok').click(function(){ 
     $.ajax({ 
      url:'http://localhost:8090/LoginAuthRWS/rest/orders', 
      type:'post', 
      dataType: 'json', 
      data: { name: "John", location: "Boston" } 

      success: function(data) { 
       response = $.parseJSON(data); 
       $('#name').val(response.name); 
       $('#email').val(response.email);  
      } 
     }); 
}); 

kilka rzeczy Uwaga:

  • dataType powinno być prawie zawsze xml lub json. Czasami JQuery może odgadnąć poprawnie, jeśli nic nie podasz. Ale musi to być prawdziwa rzecz.
  • Ponieważ robisz post, musisz wysłać dane do punktu końcowego usługi REST. To właśnie mam w data. Zauważ, że rodzaj danych odpowiada wartości w dataType. Zauważ również, że możesz użyć metody $.post, aby zrobić znacznie prostszy post z JQuery.
  • Parametr data dla wywołania zwrotnego sukcesu musi zostać najpierw przeanalizowany jako JSON (zakładając, że to właśnie powraca), ponieważ jest typu PlainObject zgodnie z opisem here. To właśnie robi $.parseJSON. Gdy to zrobisz, możesz nawigować po drzewie JSON, aby zrobić to, co musisz. Być może uda ci się uciec, nie robiąc tego jednak.

Nadzieję, że pomaga.

4

Problemy z kodem:

  • .value to nie własność funkcja
  • chcesz przekazać korzystanie json data z $.ajax
  • nie ma typu danych jako Jsondemo trzeba użyć JSON
  • , jeśli odpowiedź data nie jest JSON, możesz użyć $.parseJSON do konwersji na JSON

Pełny kod

$(document).ready(function(){ 
    $('#ok').click(function(){ 
     var uname = document.getElementById("uname").value; 
     var password = document.getElementById("pwd").value; 
     var JSONObject= { 
      "uname":uname, 
      "password":password 
      }; 

     $.ajax({ 
      url:'http://localhost:8090/LoginAuthRWS/rest/orders', 
      type:'post', 
      data : JSONObject,  
      dataType: 'JSON', 
      success: function(data) { 
        var jsonData = $.parseJSON(data); //if data is not json 
        $('#name').val(jsonData.name); 
        $('#email').val(jsonData.email); 
       } 
     }); 
    }); 
});  
+1

Przegapiłeś contentType: 'application/json' – Arashsoft

1

jQuery dataType Reference.

Możliwe dataType wartości: xml, json, script lub html

Spróbuj tego:

var dataToServer = { 
    uname : document.getElementById("uname").value, 
    document.getElementById("pwd").value 
}; 

$.ajax({ 
    url:'http://localhost:8090/LoginAuthRWS/rest/orders', 
    type:'post', // or put 
    contentType: 'application/json', // type of data 
    data: JSON.stringify(dataToServer) // make JSON string 
    dataType: 'json', // type of return result 
    success: function(data) { 
    $('#name').val(data.name); 
    $('#email').val(data.email); 
    } 
}); 
+0

wysyłasz ciąg stylu json do serwera. Należy jednak wysłać obiekt w stylu json do serwera (data: dataToServer). – Arashsoft

1

przekazać wartości do usług internetowych Ajax danych atrybutu.

<script type="text/javascript"> 

$(document).ready(function(){ 

var uname = document.getElementById("uname").value; 
var password = document.getElementById("pwd").value; 


$('#ok').click(function(){ 
    $.ajax({ 
     url:'http://localhost:8090/LoginAuthRWS/rest/orders', 
     type:'post', 
     dataType: 'Json', 

     data:{ 
      uname:uname, 
      password:password 
     }, 

     success: function(data) { 
      $('#name').val(data.name); 
      $('#email').val(data.email); 
     } 
    }); 
    }); 
}); 

</script> 
+0

Dzięki Anto Robinson .. –

+0

@JagathesewarenKuppuraj, '.value' to właściwość nie jest funkcją – Satpal

+0

Zmieniłem kod. –

0

można przekazać danych JSON jako żądanie ciała tak:

var JSONObject= {"uname":uname, "password":password }; 
    $.ajax({ 
     url : env + 'rest/orders', 
     type : 'POST', 
     headers: { 
      'Content-Type':'application/json' 
     }, 
     data : JSON.stringify(JSONObject), 
     dataType : "json", 
    });