2015-02-17 3 views
0

Я использую ajax для извлечения массива json_encode() из моего php-парсера.responseText массив не правильно разобрался

responseText является ["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]

Если я помещаю это и массив так:

var myArray = ["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]; 

туАггау вернется

4.wav, 2.wav, 3.wav, 6.mp3, 1.mp3, 5.wav 

с myArray.length кол-6, как ожидается, право ?

Но если поместить мой responseText в вар и так:

var myArray = event.target.responseText; 

туАггау вернется

["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]

и myArray.length отсчет 49.

Может кто-то любезно объясняет, что здесь происходит?

Вот как я сделал АЯКС вызов:

var ajax = new XMLHttpRequest(); 

    ajax.addEventListener("load", function(event){ 
    var response = event.target.responseText;}); 

    ajax.open("POST", "parser.php"); 
    ajax.send(); 

Заранее спасибо :)

+1

Попробуйте использовать JSON.parse к тексту ответа –

ответ

0

Вы должны использовать функцию Javascript JSON.parse() с данным ответом.

var a = '["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]'; 
alert(JSON.parse(a).length); 

Demo

4

Поскольку event.target.responseText не является массивом, это строка. Длина строкового объекта относится к количеству символов в строке. Вам нужно будет позвонить JSON.parse в ответ, чтобы получить его в нужном формате.

var responseText = '["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]'; 

responseText.length //49 at this point, the length of the string 

var responseArray = JSON.parse(responseText); 

responseArray.length //6, because it's an array 
+0

Спасибо, глупо мне: D –

0

Ничего, Я нашел решение.

, если я использую

var myArray= JSON.parse(ajaxResponse);

Возвращение будет

4.wav, 2.wav, 3.wav, 6.mp3, 1.mp3, 5.wav

Так что я могу использовать его как массив.

Lol, мой первый вопрос в StackOverflow, и я ответил на это мой slef! : P