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