1

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

有任何想法吗?

4

0 回答 0