【问题标题】:Store HTML array values into javascript array to be sent via AJAX将 HTML 数组值存储到要通过 AJAX 发送的 javascript 数组中
【发布时间】:2015-10-15 21:54:39
【问题描述】:

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

【问题讨论】:

  • [] 并不是真正的“数组表示法”。这只是 php 在使用具有该模式的键(名称)处理请求参数时显示的行为。所以你必须在 javascript 中做同样的事情:你创建一个选择器来返回所有匹配的元素并遍历结果集。然后在每次迭代中选择值并将它们放入 javascript 数组中。
  • 你有很多同名和同名的行??
  • 这完全取决于,可能只有 1 或 10,取决于用户交互。
  • @AndrewBrown 涉及什么技术并不重要,您的表单字段将需要唯一的名称,对于 js,如果它们也有唯一的 id,生活会更轻松,尽管没有理由 id 和名称在单个字段上不能相同
  • 也许我错过了如何完成我想要的一切的结构。我想要做的就是确保我的表单字段中动态创建的行被一个javascript变量捕获,这样我就可以通过AJAX将它发送到PHP脚本......谢谢你的回复。

标签: javascript php jquery arrays ajax


【解决方案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 关联数组的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2022-06-17
    • 2021-01-03
    • 2021-01-26
    相关资源
    最近更新 更多