在 jQuery 中序列化数组
如何为 $.ajax
提交准备元素数组?
这里的图像返回["val1","val2"]
,但是在我使用$.param(images)
之后我得到以下结果:
未定义=未定义&未定义=未定义
这是我的代码:
$('#rem_images').click(function() {
var images = new Array();
$('.images_set_image input:checked').each(function(i) {
images[i] = $(this).val();
});
alert($.param(images));
return false;
}
一般来说,想法是检查页面上要删除的图像,然后单击按钮循环检查所有检查的图像并序列化数组以通过 AJAX 提交到 PHP 脚本。
How to prepare an array of element for $.ajax
submit?
Here images return ["val1","val2"]
, but after I use $.param(images)
I get the following:
undefined=undefined&undefined=undefined
Here is my code:
$('#rem_images').click(function() {
var images = new Array();
$('.images_set_image input:checked').each(function(i) {
images[i] = $(this).val();
});
alert($.param(images));
return false;
}
Generally the idea is to check the images to delete on the page, then on a button click loop trough all images checked and serialize an array for submit over AJAX to the PHP script.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您没有将正确格式的数组传递给
$.param
。来自jQuery.param
文档:该数组应该是由名称/值对组成的对象数组。您会看到
undefined=undefined&undefine=undefined
因为"val1".name
、"val1".value
、"val2"。 name
和"val2".value
均未定义。它应该看起来像这样:所以你可以像这样构造数组(假设你的复选框有一个
name
属性):不过,更巧妙的是使用
.map()
(因为函数式编程是好东西):You're not passing an array in proper format to
$.param
. From thejQuery.param
docs:The array should be an array of objects consisting of name/value pairs. You see
undefined=undefined&undefined=undefined
because"val1".name
,"val1".value
,"val2".name
, and"val2".value
, are all undefined. It should look something like this:So you can construct the array like this (assuming your checkboxes have a
name
attribute):Even slicker, though, is to use
.map()
(because functional programming is good stuff):请参阅 文档了解
$.param
:这意味着您需要以相同的方式生成数组:
See the docs for
$.param
:That means you need to generate your array in the same way:
我从另一个问题中找到了一个很好的函数来做到这一点
https://stackoverflow.com/a/31751351/4110122
此函数返回带有键值对的数组
要使用此函数,只需调用:
I find a great function to do that from another question
https://stackoverflow.com/a/31751351/4110122
This function return array with key value pairs
To use this just call: