2012-01-17 71 views
152

Possible Duplicate:
Serializing to JSON in jQuery

我想送一個數組作爲一個Ajax請求:

info[0] = 'hi'; 
info[1] = 'hello'; 

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    success: function(msg){ 
    $('.answer').html(msg); 
    } 
}); 

我怎樣才能做到這一點?

+0

這裏的解決方案: http://stackoverflow.com/questions/713884/convert-js-array-to-json-object-for-use-with-jquery-ajax – Z4k4r14 2012-09-21 01:55:33

+0

類型: 'POST', 網址: '/ URL /動作/', 數據:{參數1:1,ID: 「文本」}, 數據類型: '文本', – Paul 2014-08-26 08:22:49

回答

197
info = []; 
info[0] = 'hi'; 
info[1] = 'hello'; 


$.ajax({ 
    type: "POST", 
    data: {info:info}, 
    url: "index.php", 
    success: function(msg){ 
    $('.answer').html(msg); 
    } 
}); 
+9

是......那worked..thanks..one更多的事情可以做......那是初始化**信息= {}; **然後**數據:信息,** – 2012-01-18 04:45:32

+1

它發送0 =嗨&1 =你好,它會工作嗎?取決於你的服務器端代碼。 info = {}是Javascript中的普通對象。 info = []是一個數組對象。 – Diode 2012-01-18 05:18:05

+0

你會怎麼做,如果你想'信息= arrayasvalues',而不是每一個鍵是設置了一個param? – 2016-09-27 15:35:07

52

只需使用JSON.stringify方法,通過把它作爲爲$就功能「數據」參數,如如下:

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    dataType: "json", 
    data: JSON.stringify({ paramName: info }), 
    success: function(msg){ 
     $('.answer').html(msg); 
    } 
}); 

你只需要確保你包括JSON2.js文件在你的網頁...

+0

我需要添加'JSON.stringify(...)'謝謝你的幫助! – ChaseHardin 2016-03-30 17:48:01

+0

在我的情況下,請求的鍵值映射與上面的代碼是錯誤的。我改變了「數據」行:數據:{PARAMNAME:JSON.stringify(信息)}, – Shogg 2017-06-26 10:37:14

8

由於您使用jQuery,請使用它的序列化數據,然後將其傳遞給Ajax調用的數據參數seralize功能:

info[0] = 'hi'; 
info[1] = 'hello'; 

var data_to_send = $.serialize(info); 

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    data: data_to_send, 
    success: function(msg){ 
     $('.answer').html(msg); 
    } 
}); 
+1

這還不是全部真實的,至少不是今天。 jQuery實際上不會自動序列化任何數組。當我用簡單的整數數組嘗試時,它只保留最後一項。請查看這篇文章的詳細解釋:http://stackoverflow.com/a/4239496/261332 – userfuser 2017-02-09 09:38:08

+0

謝謝@userfuser 我已經更新了答案,除去汽車連載部分。 – BlackDivine 2017-02-09 11:48:22

+11

這是如何有這麼多upvotes?沒有'jQuery.serialize()'這樣的jQuery函數。有'.serialize()',但它意味着用於一組表單元素。試試這個代碼,你將只能得到'類型錯誤:$ .serialize不是function' – billynoah 2017-08-05 00:52:39