.serialize() Javascript 中的变量数组

.serialize() an array of variables in Javascript

本文关键字:变量 数组 Javascript serialize      更新时间:2023-09-26

我有一个可用的变量列表,我想通过 $.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 });  

.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 
});  

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

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

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

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

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