1

我有一个可用的变量列表,我想通过 $.ajax post 发送它。我必须以什么格式保存这些文件才能使用 .serialize 函数?我不断收到此错误:

对象“空白”没有“序列化”方法

我试图让它们成为一个数组,并尝试了 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 });  
4

2 回答 2

3

.serialize用于表单元素

将一组表单元素编码为字符串以进行提交。

$.ajax文档说明了该选项data

要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它附加到 GET 请求的 url。请参阅processData阻止此自动处理的选项。对象必须是键/值对。如果 value 是一个数组,jQuery 会根据传统设置的值(如下所述)序列化具有相同键的多个值。

所以你需要做的就是传递一个对象。例如:

$.ajax({ 
    type: "post", 
    url: theurl, 
    data: {                             // <-- just pass an object
          attachmentId: attachmentID,
          action: 'rename',
          // ...
    },
    dataType: 'json', 
    success:  reCreateTree 
});  
于 2012-05-30T14:24:41.153 回答
3

看来您已经习惯了数组(关联数组)的 PHP 风格。在 Javascript 中,对象基本上是相同的东西(尽管可能要复杂得多)。

因此,如果您尝试在 php 中创建这样的数组,它将是

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

在 Javascript 中使用对象而不是数组

var arr = {
    foo: "bar",
    bar: "foo"
}
于 2012-05-30T14:24:55.317 回答