我遇到了一个关于使用ajax提交附加字段的障碍。
这是对我的问题的描述。
我的HTML表单是
<div id="append-fields">
<input name="firstName[]" id="firstName" value="john"></input>
<input name="lastName[]" id="lastName" value="Doe"></input>
</div>
<button onclick="appendFunction()" type="button">Add a new row</button>
单击按钮add a new row
后,我会看到两个类似下面这样的字段
<div id="append-fields">
<input name="firstName[]" id="firstName" value="anna"></input>
<input name="lastName[]" id="lastName" value="Kondo"></input>
</div>
现在,我需要使用ajax提交以下数据
firstName = 'john',lastName = 'Doe'
firstName = 'anna',lastName = 'kondo'
但我只得到了一组这样的数据
firstName = 'john',lastName = 'Doe'
下面是myscript
<script>
insert = [];
insert[0] = $("#firstName").val();
insert[1] = $("#lastName").val();
$.ajax({
url: 'myUrl',
method: 'POST',
data: {take:insert},
error: function () {
},
success: function (response) {
$('#overlay').addClass("hidden");
jQuery('#body').html(response);
}
});
</script>
这是我的PHP
function myUrl(){
$data = $_POST["take"];
}
错误在哪里?
发布于 2019-01-30 16:18:33
您可以使用formdata
var data = new FormData($('form')[0]);
data .append('extra', add_data);
或者按类序列化或seriallizeArray,我会断定
var form_data = $('.post_these').serialize();
PS: post_these是输入字段类
在PHP中按名称访问
$firstName = $_POST['firstName'];
或者当数据是数组时,创建一个对象
$data= (object) $_POST['data'];
$data-YfirstName; // use this way
PS使用这个来调试,在你的控制器中检查你收到的东西
echo '<pre>';
print_r($_POST);
echo '</pre>';
exit();
发布于 2019-01-30 15:45:50
您不应该通过ID获取数据值,因为不可能有多个相同的ID元素。
由于您使用的是jquery,因此使用$('form').serialize()
或$('form').serializeArray()
作为数组输出,以获取所有表单输入及其值。但是,在执行此操作之前,您必须将这些输入包装在一个表单元素中。
或者像上面建议的那样,手动遍历元素并获得类似这样的值。
https://stackoverflow.com/questions/54444282
复制相似问题