我有一个页面,其中包含一个包含查询结果的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";"放在"functions_comm.php"中,"alert(axax.responseText);"显示"test",那么这个部分就可以工作了。但是,如果我尝试"print_r($_POST)",它会返回一个空数组,我认为这意味着"ajax.send(table.rows[I]);"没有传递任何数据。
如何将表第I行的数据传递给php脚本?
谢谢。
- 您不能发送DOMElement的实例。您只能发送一个字符串,所以如果您想发送该元素的文本,请使用其innerHtml属性
- 消息正文应该是URL编码的(当作为应用程序/x-www-form-urlencoded发送时)
ajax.send("tableData=" + encodeURI(table.rows[i].innerHtml));
尝试
ajax.send("tableData=" + table.rows[i]);
代替
ajax.send(table.rows[i]);
编辑
我认为user1031794可能是对的,编码是必需的
ajax.send("tableData=" + encodeURI(table.rows[i].innerHtml));