无法使用Ajax将数组传递给PHP脚本

时间:2013-08-10 17:33:24

标签: php ajax arrays

我在这里遇到一个奇怪的问题,我似乎无法弄清楚为什么我不能使用ajax将一个数组传递给PHP脚本,但我可以毫无问题地传递另一个数组。

这是我的ajax功能:

function update(){

    var hr = new XMLHttpRequest();

    var url = "update.php";

    var vars = "array="+arr;
    hr.open("POST", url, true);

    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    hr.send(vars);

}

变量“arr”是一个装有坐标的二维数组,如下所示:[[2,3],[4,5],[5,2] ...]并且每次用户都是用户生成的插入新的坐标集,我使用PUSH将它们添加到数组中。

它在javascript内部声明在此函数之上。

这似乎工作得很好,因为当我在ajax函数中执行alert(JSON.stringify(arr));时,我可以清楚地看到我的浏览器中弹出的坐标对。

然而,当我在另一边(php脚本)捕获数组并使用以下命令将其写入记事本文件时:

<?php

$fp=fopen("ajax.txt","w");

$data = $_POST['array'];

fwrite($fp,$data);

fclose($fp);


?>

创建文件ajax.txt 但仍为空。

但是,当我在ajax函数中初始化另一个数组(arr1)时,如下所示:

function update(){

    var arr1=[[2,3],[4,5],[5,7]];
    var hr = new XMLHttpRequest();

    var url = "update.php";

    var vars = "array="+arr1;
    hr.open("POST", url, true);

    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    hr.send(vars);

}

PHP脚本似乎将数组写入记事本文件没有任何问题!为什么会这样?显然,“arr”变量不是空的,因为我们可以使用alert来查看它的内容。

有什么想法吗?

0 个答案:

没有答案