【问题标题】:Pass HTML table row to PHP via AJAX using POST使用 POST 通过 AJAX 将 HTML 表格行传递给 PHP
【发布时间】:2013-07-25 12:49:13
【问题描述】:

我有一个包含查询结果的 HTML 表格的页面。 在每一行旁边,我有一个按钮,单击该按钮时,会出现一个带有小 HTML 表单的灯箱,用户可以在其中输入评论。

当用户单击此表单上的提交按钮时,它应该将包含在行中的数据(即,如果可能的话,将每个单元格值作为数组发送)以及注释发送到脚本,脚本将插入它们在数据库中。

完成后,会出现一条小消息,说明灯箱消失,用户可以返回到桌子。

我的问题是将数据传输到将处理它的 PHP 脚本。 AJAX JavaScript 工作正常,只是我不知道如何发送数据。

代码如下:

function getOutput() {
  //Get number of selected table row
  var i = document.getElementById('rowclicked').value;
  //Get the table
  var table = document.getElementById('table');
  //Get the comment
  var comm = document.getElementById('comment').value;
  var ajax = getRequest();
  ajax.onreadystatechange = function(){
      if(ajax.readyState == 4){
          alert(ajax.responseText);
      }
  }
  ajax.open("POST", "functions_comm.php", true);
  ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  //Only try to send the table row for now
  ajax.send(table.rows[i]);
}

如果我把 "php echo "test"; " in "functions_comm.php", "alert(ajax.responseText);"显示“测试”,以便该部分正常工作。 但是,如果我尝试“print_r($_POST)”,它会返回一个空数组,我认为这意味着“ajax.send(table.rows[i]);”没有传递任何数据。

如何将表格第 i 行的数据传递给 php 脚本?

谢谢。

【问题讨论】:

  • 尝试报警/打印以控制 table.rows[i] 的值。这会让你看看它是否真的是空的。

标签: php javascript ajax post


【解决方案1】:

试试

ajax.send("tableData=" + table.rows[i]);

代替

ajax.send(table.rows[i]);

编辑

我认为user1031794可能是对的,需要编码

ajax.send("tableData=" + encodeURI(table.rows[i].innerHtml));

【讨论】:

  • 它似乎工作正常,谢谢。但是我怎样才能得到 PHP 中的值呢?以下似乎不起作用。 foreach ($_POST as $value) { echo $value; }
  • 试试 var_dump($_POST) - 显示什么?请记住,您需要通过 AJAX 使用发布数据执行此操作,在浏览器中输入 URL 不会显示任何发布内容,因为它将执行获取请求。
  • 编码似乎可以解决问题。至少一个 var_dump 有数据,即使它与许多其他字符混合在一起。我想我必须解码它,或者类似的东西。
【解决方案2】:
  1. 您不能发送 DOMElement 的实例。您只能发送一个字符串,因此如果您想发送该元素的文本,请使用其 innerHtml 属性。
  2. 消息正文应该是 URL 编码的(当作为 application/x-www-form-urlencoded 发送时)。

ajax.send("tableData=" + encodeURI(table.rows[i].innerHtml));

【讨论】:

    猜你喜欢
    • 2023-01-18
    • 2012-05-12
    • 2014-02-02
    • 2018-10-03
    • 2012-03-08
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多