Javascript jQuery在.done()函数中解析JSON
我知道使用jQuery解析JSON有一个快捷方式,比如Javascript jQuery在.done()函数中解析JSON,javascript,jquery,json,Javascript,Jquery,Json,我知道使用jQuery解析JSON有一个快捷方式,比如 $.post('myPhpFile.php', postData, function(data){ console.log(data.status) // "OK" },'json'); 但我真的很讨厌anon函数,也很讨厌每次都要手动解析JSON。我希望我能做到这一点(因为我不总是用同样的数据做同样的事情) 但是在.done()中,我必须首先使用$.parseJSON(数据),我有很多小函数,它们突出返回$.posts 是否有其他
$.post('myPhpFile.php', postData, function(data){
console.log(data.status) // "OK"
},'json');
但我真的很讨厌anon函数,也很讨厌每次都要手动解析JSON。我希望我能做到这一点(因为我不总是用同样的数据做同样的事情)
但是在.done()中,我必须首先使用$.parseJSON(数据),我有很多小函数,它们突出返回$.posts
是否有其他快捷方式或良好的功能方式仍然可以返回延迟对象$.post并用json解析数据?我想到
function getSomeData(phpFile, postData){
var defer = $.Deferred();
$.post(phpFile, postData, function(data){
defer.resolve(data);
},'json');
return defer.promise(data);
}
但我是强迫症患者,现在我有两个延期。只是想知道是否有更好的方法。如果您想传递
json
数据类型字段,但想使用承诺而不是匿名回调,只需传递回调的null
从:
在请求成功时执行的回调函数。如果提供了数据类型
,则为必填项,但在这种情况下可以为null
因此,您只需要:
function getSomeData(phpFile, postData) {
return $.post(phpFile, postData, null, 'json');
}
当然,如果您的服务器使用适当的
内容类型:
字段进行响应,那么JQuery很乐意猜测数据类型。如果您只是想包装参数并返回一个可以链接到的对象,请包装一个标准的ajax调用
function post(phpFile, postData){
return $.ajax({
type: "POST",
url: phpFile,
data: postData,
dataType: 'json'
});
}
post('myPhpFile.php', postData,).done(function(function(data){
console.log(data.status)
});
是的,有更好的办法。创建额外的延迟对象是一种常见的jQuery承诺反模式。注意:在第二个代码段中,
getSomeData
没有被调用.done()
将用作函数本身的方法,而不是其返回值。这是打字错误吗?嗯。。。习惯了便利函数,忘记了原来的函数。@tdoakiiii$。尽管如此,post
仍能满足您的要求。@Alnitak是的,使用null
回调将有效。我只是不喜欢它看起来的样子。@Tyrsius好吧,那只是不必要的挑剔,IMHO;-)@我想是阿尔尼塔克;虽然“让代码看起来漂亮”是这个网站的一半内容=)
function post(phpFile, postData){
return $.ajax({
type: "POST",
url: phpFile,
data: postData,
dataType: 'json'
});
}
post('myPhpFile.php', postData,).done(function(function(data){
console.log(data.status)
});