2011-10-18 49 views
2

我有這樣定義的對象:jQuery的發佈對象

data = {name: 'durk durk durk', site_id: 123456} 

而且我有一個類似如下的功能:

function(data) { jQuery.post('www.example.com/ajax', { method: 'add', data: data }) 

這將是真棒,除了它的發佈這樣的:

data[name]: durk durk durk 
data[site_id]: 123456 
method: add 

當我要的是它發佈這樣的:

name: durk durk durk 
site_id: 123456 
method: add 

所以我想我自己,「自我,只是拿出額外的數據,你會一切設置和你的同事會認爲你是多麼聰明你的花哨的對象發佈」。

所以我改變了功能,以這樣的:

function(data) { jQuery.post('www.example.com/ajax', { method: 'add', data }) 

慘烈的失敗。

請幫助我,所以我不必今晚哭泣自己去睡覺。

謝謝。

+1

要發佈這在哪裏呢? PHP?你想要一個關聯數組並將其轉換爲以一個鍵命名的變量並傳遞該值?你的服務器腳本是什麼樣子的,你是什麼意思,你想它「發佈」?閱讀答案後,我發現我的閱讀理解技巧很糟糕:-P – Gazillion

回答

2

用大鐵錘:

data.method = 'add'; 
function(data) { jQuery.post('www.example.com/ajax', data) … 
delete data.method; 

優雅的方式:

function(data) { jQuery.post('www.example.com/ajax', $.extend({}, data, {'method' : 'add'})) … 
+0

jQuery.extend()比我的建議實際上好得多。 – Tetaxa

+0

討厭說,但:是的,它是。主要原因是,它不需要OP來修改他預先存在的數據結構。 – vzwick

+0

太棒了!仍然哭着自己睡覺,但這一次是由於我的社交技巧糟糕,而不是次級編程!謝謝! ps:我在開玩笑。 –

0

使用$.extend來組合這兩個對象。

data = {name: 'durk durk durk', site_id: 123456} 
var postData = $.extend({}, data, { method: "add" }); 

function(postData) { jQuery.post('www.example.com/ajax', { postData })