我有一个js函数GetTableData(),它获取这样的数组。 [rowIndex位置,[值1,值2,值3 ...]]。我想使用Ajax POST将这些数组发送到php脚本或url。这次,它不是被发送的变量,而是一个保存值数组的函数GetTableData()。如何在没有数据发送的情况下解决这个问题。
<script language="JavaScript" type="text/javascript">
function ajax_post() {
var hr = new XMLHttpRequest();
vars = function GetTableData;// This is my problem
hr.open("POST", "destination.php", true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.table_attendance == 200) {
}
}
hr.send(vars); // Actually execute the request
document.getElementById("resultsdiv").innerHTML = "processing...";
}
</script>
HTML代码
<input type="button" value="Post using Ajax" onClick="javascript:ajax_post() );" />
答案 0 :(得分:0)
正如Marc B也指出的那样:
var vars = GetTableData();
这只有在GetTableData定义在比当前函数更高的范围内且该函数可以访问时才有效。
还要确保GetTableData“返回”数据;所以你的功能:
function GetTableData()
{
return [rowindex,[value1,value2,value3..]];
}
答案 1 :(得分:0)
除此之外,您必须将GetTableData
称为vars = GetTableData();
,您必须对请求数据进行编码:
hr.send("tableData=" + encodeURIComponent(JSON.stringify(vars)));
我们做2个编码
encodeURIComponent
强制性,必须由POST application/x-www-form-urlencoded
JSON.stringify
可选(可以是其他编码方法)。必须是你的后端cand解码的编码方法。 JSON是一个很棒的,几乎是标准的然后,在后端解析它(解码)。例如在PHP中
$tableData = json_decode($_POST['tableData'])
希望这会有所帮助。干杯