2012-05-30 32 views
1

我有一個變量列表可用於我,我想通過$ .ajax發送它。我需要使用什麼格式才能使用函數.serialize?我不斷收到此錯誤:.serialize()在Javascript中的變量數組

對象「空白」沒有方法「連載」

我試圖讓他們一個數組,我試過jQuery.param()。我有一種感覺,這很簡單,但我似乎無法得到它。謝謝!

var $data = jQuery.makeArray(attachmentId = attachmentID, action = 'rename', oldName = filename, newName, bucketName, oldFolderName, newFolderName, projectId = PID, businessId = BID); 
var serializedData = $data.serializeArray(); 
//alert(theurl); 

$.ajax({ type: "post", url: theurl, data: serializedData, dataType: 'json', success: reCreateTree }); 
+1

顯示您的代碼,該代碼我們可以幫助您的方式 – meouw

+2

'.serialize'用於表單域。只需使用一個對象作爲'data:'選項的值即可。 –

+2

你覺得'jQuery.makeArray(attachmentId = attachmentID,...)'在做什麼?這不是JavaScript的工作原理。 '.makeArray'需要一個**對象**。看看'$ .ajax'文檔中的例子,你會發現,例如'data:{id:menuId},'。我建議閱讀[MDN JavaScript指南](https://developer.mozilla.org/en/JavaScript/Guide)以瞭解該語言的基礎知識。 –

回答

3

.serialize is for form elements

Encode a set of form elements as a string for submission.

$.ajax documentation說了data選項:

Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests. See processData option to prevent this automatic processing. Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below).

因此,所有你需要做的就是傳遞一個對象。例如:

$.ajax({ 
    type: "post", 
    url: theurl, 
    data: {        // <-- just pass an object 
      attachmentId: attachmentID, 
      action: 'rename', 
      // ... 
    }, 
    dataType: 'json', 
    success: reCreateTree 
}); 
3

看來你已經習慣了PHP風格的數組(關聯數組)。在Javascript中,對象基本上是相同的東西(儘管可能會更復雜)。

所以,如果你想創建這樣PHP中的數組它使用對象而不是數組將是

$array = array(
    "foo" => "bar", 
    "bar" => "foo", 
); 
在Javascript

這將是

var arr = { 
    foo: "bar", 
    bar: "foo" 
}