2013-08-03 6 views
0

Im пытается получить php-массив в js с помощью ajax и кодирования JSON в PHP и расшифровки в JS, но не может получить желаемый результат.проанализировать массив с помощью JSON из xmlhttp.responseText

Я использую var_dump как раз перед я эхом кодированных строк и это выход:

$boardArrayEncoded = json_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.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}

На поджигатель я получаю синтаксическую ошибку:

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

array1 = JSON.parse(xmlhttp.responseText); 

, что им делать неправильно? Мне нужно использовать этот массив в JS, как я могу его правильно закодировать?

Заранее благодарен

+1

Согласно http://jsonlint.org/, то JSON вы вывесили действителен. Вы уверены, что это то, что вы получаете? –

+0

Да, это весь вывод из печати из var_dump и innerHTML. –

+1

Ну, если 'string' является частью ответа (который есть, если у вас действительно есть' var_dump' в вашем коде), то в этом проблема. –

ответ

2

Удалить var_dump. Это вывод на печать, что, вероятно, приводит к тому, что ответ, указанный вами, не является полным ответом.

Я ожидаю ваш 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} 
+0

, он выполнил задание, я удалил var_dump и его работу, вероятно, проблема заключалась в том, что var_dump писал в responseText, а затем ответ был таким, как вы упомянутый в вашем ответе, не позволяя ему находиться в правильном формате JSON. –

0

Проверьте тип содержимого:

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

Убедитесь, что у вас есть только echo $boardArrayEncoded; и не другого выхода. Также убедитесь, что у вас нет начальных пробелов или разрывов строк, поскольку это также может привести к поломке действительных данных JSON. Прежде чем вы выполните эхо, включите header('Content-type: application/json');, чтобы подготовить свой выход как JSON.

0

http://jsfiddle.net/ELc8L/

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 
Смежные вопросы