2013-07-25 123 views
3

我有一个包含查询结果的HTML表格的页面。 在每一行旁边,我有一个按钮,单击它时,使用户可以输入评论的小型HTML表单显示一个灯箱。使用POST通过AJAX将HTML表格行传递给PHP

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

完成后,会显示一条小消息,用户可以在灯箱消失时返回表格。

我的问题是将数据传输到将处理它的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的回声 ”测试;在 “functions_comm.php”“,” “警报(ajax.responseText);”显示“测试”,以便该部分正在工作。但是,如果我尝试“print_r($ _ POST)”,它会返回一个空数组,我认为这意味着没有数据通过“ajax.send(table.rows [i]);”传递。

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

谢谢。

+0

尝试警报/印刷到控制台table.rows [I]的值。这会让你看看它是否真的是空的。 –

回答

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

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

0

尝试

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

而不是

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

编辑

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

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

它似乎在工作,谢谢。 但是我怎样才能在PHP中获得价值? 以下似乎不起作用。 ($ _POST as $ value) { \t echo $ value; } – user2618988

+0

尝试var_dump($ _ POST) - 显示什么?请记住,您需要通过AJAX和发布数据来完成此操作,在浏览器中输入网址时不会显示任何帖子,因为它将会执行获取请求。 –

+0

编码似乎有诀窍。至少有一个var_dump具有数据,即使它与许多其他字符混杂在一起。我想我必须解码它,或者类似的东西。 – user2618988

相关问题