如何通过ajax将JSON数据传递给restful web服务以及如何获取JSON数据?
嗨,我是JSON的新手。我的问题是如何通过ajax将JSON数据传递给宁静的Web服务?
请帮我。
我尝试了下面的代码,但我不确定
我的索引页面
$(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 }; } }); }); });
var JSONObject= {"uname":uname, "password":password }; var jsonData = JSON.parse( JSONObject ); var request = $.ajax({ url: "rest/orders", type: "POST", data: jsonData, dataType: "json" });
代码问题:
-
.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); } }); }); });
你想做这样的事情:
$('#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
几乎总是xml
或json
。 如果你不提供任何东西,有时JQuery可以正确猜测。 但它需要是一个真实的东西。 - 由于您正在发布post,因此需要将数据发送到REST端点。 这就是我的
data
。 请注意,数据类型与dataType
中的值匹配。 另请注意,您可以使用$.post
方法使用JQuery做一个更简单的post。 - 成功回调的
data
参数需要首先解析为JSON(假设它回来了)因为它是PlainObject
类型,PlainObject
所述。 这就是$.parseJSON
作用。 完成后,您可以根据需要导航JSON树以执行您需要执行的操作。 尽管如此,你可能无法逃脱。
希望有所帮助。
要将值传递给Web服务,Ajax具有data属性。
jQuery dataType
参考 。
可能的dataType
值: xml
, json
, script
或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); } });
您可以将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", });