Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从xmlhttp.responseText使用JSON解析数组_Php_Javascript_Arrays_Json - Fatal编程技术网

Php 从xmlhttp.responseText使用JSON解析数组

Php 从xmlhttp.responseText使用JSON解析数组,php,javascript,arrays,json,Php,Javascript,Arrays,Json,我正在尝试使用ajax将php数组转换为js,并在php中使用JSON编码,在js中解码,但无法获得所需的结果 我在回显编码字符串之前使用var_dump,这是输出: $boardArrayEncoded=json\u encode($boardArray); var_dump($boardArrayEncoded); echo$boardArrayEncoded; JSON_encode后面的字符串是: string '{"1x1":0,"1x2":0,"1x3":0,"1x4":0,"1x

我正在尝试使用ajax将php数组转换为js,并在php中使用JSON编码,在js中解码,但无法获得所需的结果

我在回显编码字符串之前使用var_dump,这是输出:

$boardArrayEncoded=json\u encode($boardArray);
var_dump($boardArrayEncoded);
echo$boardArrayEncoded;
JSON_encode后面的字符串是:

string '{"1x1":0,"1x2":0,"1x3":0,"1x4":0,"1x5":0,"1x6":0,"2x1":0,"2x2":0,"2x3":0,"2x4":0,"2x5":0,"2x6":0,"3x1":0,"3x2":0,"3x3":0,"3x4":0,"3x5":0,"3x6":0,"4x1":0,"4x2":0,"4x3":0,"4x4":0,"4x5":0,"4x6":0,"5x1":0,"5x2":0,"5x3":0,"5x4":0,"5x5":0,"5x6":0,"6x1":0,"6x2":0,"6x3":0,"6x4":0,"6x5":0,"6x6":0}'
在javascript中,我尝试解析它:

if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“logDiv1”).innerHTML=xmlhttp.responseText;
array=JSON.parse(xmlhttp.responseText);
}
这是一个xmlhttp。回应文本::<代码>{“1x1:1:0”,1x3:0,“1x4:0”,1x5:0,“1x5:0”,1x6:0,“1x6”:0”,1x1:0,“1x1:0”,1x1:0,“1x1:0”,1x1:0,“1x1:0”,1x1:0,“1x3:0”,1x3:0,“1x5:0”,1x5:0,“1x5:0”,1x5:0,“1x5:0”,0,“1x5:0”,0,“0”,0,“4x0,”4x0,”4x3:0,“4x0,”4x10,”4x10,“4x10,”4x0,”0,”4x0,“4x0,”4x0,“4x0”,0,”4x0,“4x0”,0,”4x0,“4x0”,0,”0,”4x0,“4x0”,0,“4x0,“4x3”0,”“6x5”:0,“6x6”:0}

在firebug上,我发现语法错误:

SyntaxError: JSON.parse: unexpected character
[Break On This Error]   

array1 = JSON.parse(xmlhttp.responseText);
我做错了什么?我需要在JS中使用这个数组,如何正确编码它


提前感谢

删除var\u转储。它是打印输出,这可能导致您所说的responseText不是完整的responseText

我希望你的答复如下:

string '{"1x1":0,"1x2":0,"1x3":0,"1x4":0,"1x5":0,"1x6":0,"2x1":0,"2x2":0,"2x3":0,"2x4":0,"2x5":0,"2x6":0,"3x1":0,"3x2":0,"3x3":0,"3x4":0,"3x5":0,"3x6":0,"4x1":0,"4x2":0,"4x3":0,"4x4":0,"4x5":0,"4x6":0,"5x1":0,"5x2":0,"5x3":0,"5x4":0,"5x5":0,"5x6":0,"6x1":0,"6x2":0,"6x3":0,"6x4":0,"6x5":0,"6x6":0}'
{"1x1":0,"1x2":0,"1x3":0,"1x4":0,"1x5":0,"1x6":0,"2x1":0,"2x2":0,"2x3":0,"2x4":0,"2x5":0,"2x6":0,"3x1":0,"3x2":0,"3x3":0,"3x4":0,"3x5":0,"3x6":0,"4x1":0,"4x2":0,"4x3":0,"4x4":0,"4x5":0,"4x6":0,"5x1":0,"5x2":0,"5x3":0,"5x4":0,"5x5":0,"5x6":0,"6x1":0,"6x2":0,"6x3":0,"6x4":0,"6x5":0,"6x6":0}
检查内容类型:

  header('Content-type: application/json');

确保您只有
echo$boardArrayEncoded其他输出。还要确保没有前导空格或换行符,因为这也会打断有效的JSON数据。在执行echo之前,包括
header('Content-type:application/json')以JSON格式准备输出。

“1x5”:0,“3x6”0,“3x6”0,“3x6”0,“3x6”0,“3x6”0,“4x1”:0,“1x6”:0,”1x6”:0,“1x1”:0,“2x1”:0,“1x1”:0,“1x1”:0,”1x1:0,“1x6”:0,“1x5”0,“1x5”:0,“1x5”0”,1x6:0,“4x1”:0,”0,“4x3”:0,“4x3”0,”4x3”0,“4x3”:0,”0,“4x3”0,“4x3”0,”4x3”0,“4x3”:0,“4x3”0,”4x3”0,“4x3”0,”4x3”0,“4x3”0,”4x3”0,“4x3”0,“4x3”0,“4x3”:0,“4x3”0,“4x3”0,”4x3”0,”:0,“6x6”:0}';//您的JSON字符串。 parsedJSON=eval('('+responseText+'));//解析的JSON。对象 警报(parsedJSON[“1x1”]);//访问对象元素是这样的,因为您不能编写parsedJSON.1x1; for(parsedJSON中的元素){ document.body.innerHTML+=element+“=>”+parsedJSON[element]+“
”; }//只是一个vardump,表示一切都很完美
根据,您发布的JSON是有效的。你确定这就是你得到的吗?是的,这是从var_dump和innerHTML打印出来的所有输出。好吧,如果
string
是响应的一部分(如果你的代码中真的有
var_dump
),那么这就是问题所在。我尝试了JSON.parse(上面的响应文本),它没有给我任何错误,它完成了任务,我删除了var_转储及其工作,可能问题是var_转储正在写入responseText,然后响应就像您在回答中提到的那样,阻止了它使用正确的JSON格式。
var responseText='{"1x1":0,"1x2":0,"1x3":0,"1x4":0,"1x5":0,"1x6":0,"2x1":0,"2x2":0,"2x3":0,"2x4":0,"2x5":0,"2x6":0,"3x1":0,"3x2":0,"3x3":0,"3x4":0,"3x5":0,"3x6":0,"4x1":0,"4x2":0,"4x3":0,"4x4":0,"4x5":0,"4x6":0,"5x1":0,"5x2":0,"5x3":0,"5x4":0,"5x5":0,"5x6":0,"6x1":0,"6x2":0,"6x3":0,"6x4":0,"6x5":0,"6x6":0}'; // Your JSON string.
parsedJSON=eval('('+responseText+')'); // Parsed JSON. Object.
alert(parsedJSON["1x1"]); // Access object element's like this, because you can't write parsedJSON.1x1;
for(element in parsedJSON){
    document.body.innerHTML+=element+" => "+parsedJSON[element]+"<br />";
} // Just a vardump to show everything's perfect