将HTML数组值存储到javascript数组中,以通过AJAX发送

时间:2015-07-25 06:57:57

标签: javascript php jquery arrays ajax

我有一个表单,我可以在其中克隆表格行。每个表单元素都被命名为一个数组,名称后面带有[]。如果我将表单直接发送到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发送变量的正确方法也会有所帮助。谢谢

1 个答案:

答案 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关联数组的方法。