我拼命尝试在 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/