2013-10-24 171 views
7

嗨,我是JSON新手。我的問題是如何通過AJAX將JSON數據傳遞給安靜的Web服務?如何通過ajax將JSON數據傳遞給restful web服務以及如何獲取JSON數據?

請幫幫我。

我試圖通過下面的代碼,但我不知道這件事

我的索引頁

<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> 

回答

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

感謝Ur的幫助Arvind –

+0

使用JSON.stringify返回一個代表javascript對象的json字符串。 JSON.parse將字符串轉換爲javascript對象 – micha

+2

您錯過了contentType:'application/json' – Arashsoft

1

你想要做這樣的事情:

$('#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);  
      } 
     }); 
}); 

有幾件事情要注意:

  • dataType應該幾乎總是xmljson。如果你不提供任何東西,有時JQuery可以正確猜測。但它必須是一個真實的東西。
  • 由於您正在發帖,您需要將數據發送到REST端點。這就是我在data。請注意,這些數據的種類與dataType中的值相匹配。另外請注意,您可以使用$.post方法來使用JQuery做更簡單的帖子。
  • 成功回調的data參數需要首先解析爲JSON(假設這是回來的事情),因爲它的類型爲,如​​所述。這就是$.parseJSON。一旦你這樣做了,你可以根據需要瀏覽JSON樹來完成你需要做的事情。儘管如此,你也許可以脫身。

希望有幫助。

4

問題與您的代碼:

  • .value是屬性不是一個功能
  • 你想要的$.ajax
  • 有沒有數據類型JSON使用data通過爲Jsondemo,你必須使用JSON
  • 如果迴應data不是JSON,您可以使用$.parseJSON將其轉換爲JSON

完整代碼

$(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

你錯過的contentType: '應用/ JSON的' – Arashsoft

1

jQuery dataType Reference

可能dataType值:xmljsonscript,或html

試試這個:

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

您發送的是JSON風格的字符串到服務器。但是,您應該將json樣式對象發送到服務器(data:dataToServer)。 – Arashsoft

1

要值傳遞給Web服務阿賈克斯數據屬性。

<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

謝謝Anto Robinson .. –

+0

@JagathesewarenKuppuraj,'.value'屬性不是函數 – Satpal

+0

我改變了我的代碼。 –

0

可以傳遞JSON數據作爲請求體是這樣的:

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