簡體   English   中英

Javascript為jQuery AJAX創建JSON哈希數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM