发送带有ajax请求的数组到php

时间:2014-01-09 16:48:22

标签: javascript php ajax

我有一个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() );" />

2 个答案:

答案 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'])

希望这会有所帮助。干杯