jQuery POST请求 - 返回JSON
我想使用jQuery $.ajax
进行POST调用发送一些信息(通过POST,如:page.aspx?var1=value
....)。jQuery POST请求 - 返回JSON
但我也希望jQuery来处理该服务返回JSON,以便我找回一个JSON对象。
var data = {name: _name, ...};
var request = $.ajax({
url: url,
type: "post",
data: data,
//dataType: "json"
});
只要我使用dataType: "json"
,这让我接收JSON对象,我得到对请求进行parseerror!
希望你能帮我解决这个问题!
感谢您的支持!
确保您的serverside脚本返回编码的json。
在php中使用json_encode()
。
echo json_encode($response);
也$.ajax
调用设置dataType : 'json'
。
圣洁的废话!你们很快就变得怪异了!感谢那!! – Nik 2013-02-28 08:40:15
正确的方法是通过'header('Content-type:application/json');'...在POST文件上设置标题这迫使服务器将其识别为json。在那个时候不需要'dataType:json'。 – PlantTheIdea 2013-02-28 08:40:34
@ user2118781好吧,它可以帮助你还是一样...让我知道更多的帮助.. – 2013-02-28 08:45:48
首先,post请求没有在URL之后附加的参数。您指定的格式用于GET请求。 你可以用以下达到同样的目标:
$.post(
'/yourURLL',
{'data' : dataJson},
function(data){
handleIncomingJSON(data);
}).error(function(data, textStatus){handleUnsuccessfulSave(data, textStatus)});
从你必须让数据以JSON格式 像
echo json_encode($response);
请求的URL,然后你会得到成功的功能一样,响应JSON这样的:
$.ajax({
type:"POST",
url: "your_url",
data:data,
success: function (response){
var arr = $.parseJSON(response);
}
});
以我自己的经验,当调用浏览器本机JSON解析器而不是使用jQuery库进行解析时,我获得了最佳结果。所有现代浏览器现在都支持这种方法,使其成为跨浏览器兼容性的更好方法。 'var arr = JSON.parse(response);' – Epiphany 2014-10-13 08:17:13
按照该jQuery $.post
documentation,我强烈建议执行所有主要的回调方法(done
,fail
,always
)开始,这样,如果有你的JSON响应错误,那么它们不会隐藏:
var jqxhr = $.post(
"example.php",
function(response) {var arr = JSON.parse(response);},
'json'
)
.done(function() {console.log("second success");})
.fail(function() {console.log("error");})
.always(function() {console.log("finished");});
什么是你得到确切的错误? – 2013-02-28 08:34:09
你可以在请求中设置一个类似于“Content-Type:application/json”的头文件,jQuery将自动地知道它得到了什么。 – Merec 2013-02-28 08:35:13
如果你得到一个分析错误,这可能意味着你的JSON是无效的。你能粘贴你返回的JSON字符串吗?这可能是语法在某个地方被打破了。 – Lev 2013-02-28 08:35:13