使用POST通过AJAX将HTML表行传递给PHP

时间:2013-07-25 14:41:03

标签: php javascript ajax post

我有一个页面,其中包含一个包含查询结果的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”测试“;”放在“functions_comm.php”中,“alert(ajax.responseText);”显示“测试”,以便该部分正常工作。 但是,如果我尝试“print_r($ _ POST)”,它将返回一个空数组,我假设这意味着“ajax.send(table.rows [i]);”没有传递数据。

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

感谢。

2 个答案:

答案 0 :(得分:3)

  1. 您无法发送DOMElement的实例。您只能发送一个字符串,因此如果要发送该元素的文本,请使用其innerHtml属性。
  2. 邮件正文应该是URL编码的(当发送为application / x-www-form-urlencoded时)。
  3. ajax.send("tableData=" + encodeURI(table.rows[i].innerHtml));

答案 1 :(得分:0)

尝试

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

而不是

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

修改

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

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