javascript - jQuery 在 .done() 函数中解析 JSON

标签 javascript jquery json

我知道有一个用 jQuery 解析 JSON 的快捷方式,例如

$.post('myPhpFile.php', postData, function(data){
   console.log(data.status) // "OK"
},'json');

但我真的很讨厌匿名函数,而且我也很讨厌每次都必须手动解析 JSON。我希望我能做到这一点(因为我并不总是用相同的数据做同样的事情)

function getSomeData(phpFile, postData){
   return $.post(phpFile, postData);
}

getSomeData.done(function(data){
   console.log(data.status) // error, as is not JSON   
},'json');

但是在 .done() 中,我必须首先 $.parseJSON(data),而且我有很多这样的小函数,它们只是返回 $.posts。

是否有任何其他快捷方式或良好的功能方式仍然返回 $.post 的延迟对象并且数据已经解析为 json ?我想到了

function getSomeData(phpFile, postData){
    var defer = $.Deferred();
    $.post(phpFile, postData, function(data){
      defer.resolve(data);
   },'json');
   return defer.promise(data);
}

但我有强制症,现在我有两次延期。只是好奇是否有更好的方法。

最佳答案

如果您想传递 json dataType 字段,但想使用 Promises 而不是匿名回调,只需为回调传递 null 即可。

来自docs :

A callback function that is executed if the request succeeds. Required if dataType is provided, but can be null in that case

因此您需要的是:

function getSomeData(phpFile, postData) {
    return $.post(phpFile, postData, null, 'json');
}

当然,如果您的服务器使用适当的 Content-type: 字段进行响应,那么 JQuery 无论如何都会很乐意猜测数据类型。

关于javascript - jQuery 在 .done() 函数中解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679256/

相关文章:

javascript - 工具提示在生成的内容中不起作用

javascript - 在文本/模板中编辑 HTML

jquery循环遍历图像并替换src

json - Node Express 和 JSON 响应格式

javascript - 没有 Socket.IO 的 Node.js 聊天

python - 在python 3.1中将google搜索结果转换为json

javascript - 使用 JAVAScript 从 Phonegap 应用程序向 DJANGO 提交表单

javascript - AngularJS 1.2 跨源请求仅支持 HTTP

javascript - 如何在 Javascript/jQuery 中模仿 HTML 元素并向其添加属性

javascript - 将鼠标悬停在另一个图像上时如何触发图像悬停效果?