2012-09-07 80 views
1

我想發送帶有特殊參數的請求,如下面的例子所示。但不幸的是,這個腳本只發送id。我如何傳輸嵌套的JSON?原型。 Ajax請求參數作爲嵌套json

new Ajax.Request("/specials/update_users_specials", { 
    method: 'post', 
    parameters: { 
     id: '1', 
     data: { 
      data_one: '2', 
      data_two: '3' 
     } 
    }, 
    onSuccess:function(){} 
}); 

UPD。
我試過

var parameters = {}; 
$A(rows).each(function(d){ 
    parameters[d.dataset.userId] = d.value; 
}); 
params={}; 
params['data']=parameters; 
params['part']=45; 

不起作用。我試過

var parameters_json = eval("(" +JSON.stringify(params) + ")"); 

不工作。 現在我已經嘗試過

$H({ id: '1', data: { data_one: '2', data_two: '3' } }) 

結果相同。

UPD。

我使用的鐵軌和我的解決辦法:

var parameters = {}; 
$A(rows).each(function(d){ 
    parameters['users[' + d.dataset.userId + ']'] = d.value; 
}); 
parameters['part_id']=id; 

回答

2

從手動,http://www.prototypejs.org/api/ajax/options

參數「」爲請求的參數,將被編碼到網址'get'方法,或者其他方法的請求主體。這可以提供無論是作爲一個URL編碼的字符串或任何Hash兼容對象(基本上任何東西),與表示參數屬性「

和關於哈希,http://www.prototypejs.org/api/hash

有兩種構造一個Hash實例的方法:第一個是使用new關鍵字的常規JavaScript對象實例化,第二個使用$H函數。傳遞一個普通的JavaScript對象或一個Hash對其中的任何一個進行克隆,以保持原始對象的完整。

因此,從JSON創建一個哈希,你應該很好。

UPDATE

從他們的網頁更(那是很久以前的事,因爲我用的原型自己)http://www.prototypejs.org/learn/introduction-to-ajax

new Ajax.Request('/some_url', { 
    method: 'get', 
    parameters: {company: 'example', limit: 12} 
}); 

參數傳遞中作爲哈希(首選)或一串由&符號分隔的鍵值對(如公司= example & limit = 12)。

因此,它不理解多維哈希,只是鍵值對。

但是,我確實發現this snippet of code at Google groups可能會幫助你。

+0

感謝您的回覆。 –

+0

不客氣。 –