我有一个表单,我可以在其中克隆表格行。每个表单元素都被命名为一个数组,名称后面带有[]。如果我将表单直接发送到PHP脚本,这没什么大不了的。我不想刷新所以我需要将值存储在javascript数组中然后将该数组发送到我的PHP脚本等。我很难创建一个新的javascript变量,它是所有值的数组。
其中一个是完整的我确信在PHP中请求它非常简单。
以下是我的HTML表单示例。
<form class="form8" name="formfine">
<table class="tablesorter2" cellspacing="0" id="adddate">
<tbody>
<tr>
<td>Expense:</td>
<td>
<select id="fineexpense" name='fineexpense[]'>
<option value='Mortage/Rent'>Mortage/Rent</option>
<option value='Auto'>Auto</option>
</select>
</td>
</tr>
</tbody>
</table>
</form>
这是我目前的AJAX功能
function ajax_finesave(){
var hr = new XMLHttpRequest();
var url = "PHP/FFfinesave.php";
var fineexpense = document.formfine.elements['fineexpense[]'];
对此的任何帮助都会很棒,请求ajax发送变量的正确方法也会有所帮助。谢谢
答案 0 :(得分:1)
使用JQuery的一种简单方法是序列化表单。该函数为here。
用法是......
$('.form').serialize();
...结果值是一个查询字符串,可以作为单个变量发送到服务器,并根据php的要求进行解析,使用类似parse_str()
的函数
要记住关于JavaScript的另一件事是它的数组不能像键控哈希一样使用,正如你在PHP中看到的那样。您需要使用对象作为键。因此,您将无法在JavaScript中创建模仿php $_POST
数组的数组。
你可以从你的表单中构建一个JSON对象并使用AJAX(JQuery的version here)发布它,然后使用php的json_decode()
来打开它的服务器端。在这里需要注意$assoc
参数,以便在php中获取数组。
JQuery示例如下:
var myJSON = {
formField: $('.form-field').val(),
anotherFormField: $('.another-form-field').val()
}
$.ajax({
url: 'my-url',
method: 'post',
data: {
formJSON: myJSON
},
success: function() {
// success update here
}
});
在示例myJSON
中是一个带有命名键的JavaScript对象,这些键用表单字段值填充(尽管会做任何事情)。这就是你在JavaScript中模仿php关联数组的方法。