我在这里遇到一个奇怪的问题,我似乎无法弄清楚为什么我不能使用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来查看它的内容。
有什么想法吗?