我在这里遇到了一个奇怪的问题,我似乎无法弄清楚为什么我不能使用 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 中。
这似乎工作正常,因为当我alert(JSON.stringify(arr));
在 ajax 函数内部执行时,我可以清楚地看到浏览器中弹出的坐标对。
但是,当我在另一边(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 来查看它的内容。
有任何想法吗?