.serialize()Javascript中的变量数组

时间:2012-05-30 14:09:46

标签: javascript jquery serialization

我有一个可供我使用的变量列表,我想通过$ .ajax发送它。我必须使用什么格式来使用函数.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 });  

2 个答案:

答案 0 :(得分:3)

.serialize is for form elements

  

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

$.ajax documentation代表data选项:

  

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

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

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

答案 1 :(得分:3)

似乎你习惯了数组的PHP风格(关联数组)。在Javascript中,对象基本上是相同的东西(尽管可能更复杂)。

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

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

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

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