【发布时间】:2015-07-15 00:34:54
【问题描述】:
我有下面的 HTML,我的想法是我有一个添加按钮,您可以添加多个地址。添加按钮将简单地为另一个具有相同名称的输入插入 html,从而创建一个 html 输入数组。我无法通过 ajax 将多个输入传递给 php 脚本。
<form id="addTripForm" class="form-horizontal">
<div class="form-group">
<label class="col-xs-4 text-right">Address</label>
<div class="col-xs-8"><input type="text" class="form-control" id="deliveryAddress[]" name="deliveryAddress[]" required/></div>
</div>
</form>
我已经尝试过这种传递值的方式(这里我只是通过名称获取元素并将其放入变量 formData 中)。
var deliveryAddress = document.getElementsByName('deliveryAddress[]');
var formData = {"deliveryAddress":deliveryAddress};
通过以下方式,我获取元素,然后循环遍历它们并将这些值推送到数组,然后将该数组分配给变量 formData
var deliveryAddress = document.getElementsByName('deliveryAddress[]');
var deliveries = new Array();
for(var i=0;i<deliveryAddress.length;i++){
deliveries.push(deliveryAddress[i].value);
}
var formData = {"deliveryAddress":deliveries};
然后我使用变量 formData 中的值(从上面)并通过 ajax 推送它
$.ajax({
url : "/admin/PHPClasses/addToDB.php?type=Trip",
type: "POST",
data : formData,
success: function(data, textStatus, jqXHR)
{
$('.form-group').hide();
$('.bg-success').show();
$('#saveChanges').hide();
window.location.reload();
},
error: function (jqXHR, textStatus, errorThrown)
{
$('.bg-danger').show();
}
});
最后,在我的 PHP 脚本中,我尝试按如下方式访问 deliveryAddress
$deliveryAddress = filter_input(INPUT_POST, "deliveryAddress");
如果有人能证明我做错了什么,以及这是否是解决这个问题的最佳方法。非常感谢您的所有帮助。
更新:我认为所有答案可能都是正确的,我只是注意到我没有关闭页面底部的正文和 html 标记,这导致 javascript 序列化无法正常工作。感谢大家的帮助
【问题讨论】:
-
console.log(formData);的结果是什么? -
@Hackerman 我得到以下
Object {deliveryAddress: div#deliveries} -
这是预期的结果吗(我认为不是)???
-
@Hackerman,是的,你是对的,这不是预期的结果。所以我尝试了我的第二种方法
var deliveryAddress = document.getElementsByName('deliveryAddress[]'); var deliveries = new Array(); for(var i=0;i<deliveryAddress.length;i++){ deliveries.push(deliveryAddress[i].value); } var formData = {"deliveryAddress":deliveries}; console.log(formData);并得到了以下Object {deliveryAddress: Array[1]} -
是的,这似乎更有意义......只是最后一次检查并发布
console.log(deliveries);的结果
标签: javascript php jquery html ajax