0

我正在将 php 中的数组(使用爆炸从字符串转换)发送到单独的 javascript 页面。我想知道如何进入 javascript 数组并实际检索数据值。

javascript中的数组(来自php文件)-

array(2) {
  [0]=>
  string(2) "30"
  [1]=>
  string(0) ""
}
array(2) {
  [0]=>
  string(2) "30"
  [1]=>
  string(0) ""
}

这是javascript页面上的ajax调用-

$.ajax({
    url: "GetTest.php",
    type: "POST",
    success: function(data){
     alert("success");
     console.log(data);  
    },
    error: function(data){
     alert('failure'); 
    }
});

在php页面上-

var_dump((explode(',', $something));

我如何进入这里并取出“30”值。我正在使用 ajax 调用来获取这些数据,然后将这个数组放在一个名为“data”的变量中,但是如果我执行类似 data[0] 的操作,我会得到字母“a”作为响应。对此的任何帮助将不胜感激。谢谢,

4

3 回答 3

3

如果您返回数组本身,它不会被转换为 JavaScript 对象。我相信你只会得到字符串“Array”。您需要做的是调用json_encode($your_array)将数组转换为 JavaScript 对象。然后,PHP 将返回一个如下所示的 JavaScript 对象:

{
  "0": "30",
  "1": ""
}

然后,您可以在响应上调用 JSON.parse 并像访问任何其他 JavaScript 对象一样访问该对象中的数据。

注意:如果您使用的是 PHP < 5.2 并且没有安装 JSON PECL 扩展,则该json_encode()函数将不可用,您将需要编写一个将数组转换为 JSON 的函数或查找其他人编写的函数。

于 2012-07-09T14:13:08.447 回答
0

JavaScript 数组应如下所示...

var myArray = ["30", "0"];

如果您在索引 0 处获得“a”,则您可能有一个字符串而不是数组。

"array"[0] === "a"

所以你需要先修复你的客户端阵列。

于 2012-07-09T14:12:42.993 回答
0

在纯 JavaScript 中:

xhr.onreadystatechange = function()//where xhr is your request object
{
    if (this.readyState === 4 && this.status === 200)
    {
        var yourArray = JSON.parse(this.responseText);
        console.log(yourArray);//logs the array above, normally
    }
};

请注意,至少在 9 之前的 IE 不标配 JSON 支持,在这种情况下,只需 google JSON.js 并将其包含在标头中即可。
还要确保您发送的数组json_encode在回显之前是 'ed。

查看您添加的代码,我会说:替换 var_dumpecho json_encode(explode(',',$someString));就可以了

于 2012-07-09T14:15:37.700 回答