Den*_*nny 7 javascript ajax jquery 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(){...
}
});
Run Code Online (Sandbox Code Playgroud)
我想要的是以下内容:
{fields => [{index:0, name:1, value:2},{...},{...}]}
Run Code Online (Sandbox Code Playgroud)
我得到的是这个:
{"fields"=>{"0"=>{...}, "1"=>{..}, "2"=>{...}, "3"=>{...}}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
当您将对象作为data属性传递时,jQuery会将其作为url编码的表单参数(例如foo=bar&moo=too)传递给正文.我想你想要的是通过身体传递JSON.
抓住json2.js 叔叔Crockford写的并使用JSON.stringify(该库为仍然不支持它的浏览器提供功能):
$.ajax({
type: 'PUT',
url: url,
data: JSON.stringify(fieldsobj),
contentType: "application/json",
success: function(data){...
},
complete: function(){...
}
});
Run Code Online (Sandbox Code Playgroud)
别忘了设置contentType属性!在PHP方面,您可以使用json_decode解码原始正文内容:
$fieldsobj = json_decode(@file_get_contents('php://input'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8679 次 |
| 最近记录: |