我有文本框数组
<input type="text" name="txt[]" id"txt[]" value="test 1" />
<input type="text" name="txt[]" id"txt[]" value="test 2" />
<input type="text" name="txt[]" id"txt[]" value="test 3" />
并希望使用 jQuery 将此数组发布到 PHP 文件:
$('#submit').click(function() {
$.ajax({
type : 'POST',
url : '<?php echo site_url('projects/create'); ?>',
data: {
txt: $('#txt').val()
},
success:function (data) {
$("#log_msg").html(data);
}
});
});
但它返回undefined
只要写
<input type="text" name="pro_video[]" id="pro_video" />
$('#submit').click(function() {
var videos = $('input[name^=pro_video]');
var postData = {
vdo: [], // the videos is an array
};
$.each(videos, function(index, el) {
// push the value in the vdo array
postData.vdo.push($(el).val());
});
$.ajax({
type : 'POST',
url : '<?php echo site_url('projects/create'); ?>',
data: {
pro_video : postData
},
success:function (data) {
$("#log_msg").html(data);
}
});
});
您可以使用jQuery serialzie()从html表单中获取表单值。
例如:
<form id="testForm" method="post">
<input type="text" name="txt[]" id"txt[]" value="test 1" />
<input type="text" name="txt[]" id"txt[]" value="test 2" />
<input type="text" name="txt[]" id"txt[]" value="test 3" />
</form
并使用jQuery从表单中获取值。
$('#testForm').serialize();
要将数组从 JavaScript 传递到 PHP,您可以使用 JQuery 中的序列化函数。您可以为整个表单或某些选定的表单元素传递此内容。对于您给出的示例,它看起来像这样:
该 HTML:
<input type="text" name="txt[]" class="txt" value="test 1" />
<input type="text" name="txt[]" class="txt" value="test 2" />
<input type="text" name="txt[]" class="txt" value="test 3" />
还有Javascript:
$('#submit').click(function() {
$.ajax({
type : 'POST',
url : '<?php echo site_url('projects/create'); ?>',
data: {
txt: $('.txt').serialize()
},
success:function (data) {
$("#log_msg").html(data);
}
});
});
这将给你的 php 字符串"txt%5B%5D=test+1&txt%5B%5D=test+2&txt%5B%5D=test+3",它可以解释为这些值的数组。
请注意,我使用了类而不是 id,因为 id 对于每个元素都应该是唯一的。
jQuery $(form).serialize() 函数将在这里为您提供帮助!
$('#submit').click(function() {
$.ajax({
type : 'POST',
url : '<?php echo site_url('projects/create'); ?>',
data: $('#testForm').serialize(),
success:function (data) {
$("#log_msg").html(data);
},
error: function(x,t,e){
$("#log_msg").html('An error occured: '+e);
}
});
});
您将在文件中得到一个 $_POST 漂亮且干净的数组(site_url('projects/create') 指向的任何位置)。警告的想法是,如果您将输入提交添加到该表单中,serialize() 也会发布提交值,因此如果您打算将数组直接插入数据库,则必须将其从 POST 数组中删除。无论如何。;)
玩得愉快!PS:id"txt[]"对我来说似乎不是一个正确的标记...!id="txt_1"。您的文档中只能有一个引用 ID,我认为您不能在标记 ID 上使用括号。(如果我错了,有人纠正我。