3

我有一个包含查询结果的 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 脚本?

谢谢。

4

2 回答 2

3
  1. 您不能发送 DOMElement 的实例。您只能发送一个字符串,因此如果您想发送该元素的文本,请使用其 innerHtml 属性。
  2. 消息正文应该是 URL 编码的(当作为 application/x-www-form-urlencoded 发送时)。

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

于 2013-07-25T14:57:06.223 回答
0

尝试

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

代替

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

编辑

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

ajax.send("tableData=" + encodeURI(table.rows[i].innerHtml));
于 2013-07-25T14:47:21.720 回答