Javascript 为 jQuery AJAX 创建 JSON 哈希数组

标签 javascript jquery ajax json

我拼命尝试在 Javascript 中手动创建一个 JSON 样式的数组,以通过 jQuery 的 AJAX 方法通过网络发送。

var fieldsobj = {fields:[]}
$(".fact_field", fact).each(function(index, field){
    var index  = $(field).attr("data-index");
    var name  = $(".fact_field_label", field).text().trim();
    var value  = $(".fact_field_value", field).text().trim();
    fieldsobj["fields"].push({index:index, name:name, value:value});
});
//...
$.ajax({
    type: 'PUT',
    url: url,
    data: fieldsobj,
    success: function(data){...
    },
    complete: function(){...
    }
});

我想要的是:

{fields => [{index:0, name:1, value:2},{...},{...}]}

我得到的是这样的:

 {"fields"=>{"0"=>{...}, "1"=>{..}, "2"=>{...}, "3"=>{...}}

我做错了什么?

最佳答案

当您将对象作为 data 属性传递时,jQuery 会将其作为 url 编码的表单参数(例如 foo=bar&moo=too)传递到正文中。我想你想要的是通过正文传递 JSON。

获取 json2.js written by uncle Crockford并使用 JSON.stringify(该库为仍然不支持它的浏览器提供功能):

$.ajax({
    type: 'PUT',
    url: url,
    data: JSON.stringify(fieldsobj),
    contentType: "application/json",
    success: function(data){...
    },
    complete: function(){...
    }
});

并且不要忘记设置 contentType 属性!在 PHP 端,您可以使用 json_decode 来解码原始正文内容:

$fieldsobj = json_decode(@file_get_contents('php://input'));

关于Javascript 为 jQuery AJAX 创建 JSON 哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5037896/

相关文章:

javascript - PHP session 变量不通过 AJAX 调用持久化

javascript - Rails.js 的目的

javascript - jQuery - 每个特定滚动位置一个触发器

javascript - 如何通过原型(prototype) Ajax.Request() 传递 HTTP AUTH 值?

javascript - 如何根据用户区域设置使用自定义日期格式显示日期

jQuery 验证插件对我不起作用

javascript - 在动画之后将元素移回其原始位置,jQuery

javascript - Polymer 1.0 中父子页面之间的事件处理

javascript - 服务器响应消息

php - Dropzone 和非对象错误