[英]Javascript Create JSON Hash Array for jQuery AJAX
我拼命想在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。
抓住叔叔Crockford寫的json2.js
並使用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'));
可能這有幫助。
<ul>
<li id="p1" data-age="40">John</li>
<li id="p2" data-age="28">Jack</li>
<li id="p3" data-age="50">Nash</li>
</ul>
<script>
var a = [];
$("li").each(function(i){
var o = {};
o.id = $(this).attr("id");
o.age = $(this).attr("data-age");
o.name = $(this).text();
a.push(o);
});
console.log(a);
//var a = [{id:"p1",age:40, name:"John"},{id:"p2",age:28, name:"Jack"},{id:"p3",age:50, name:"Nash"}];
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.