2011-09-04 7 views
0

Я следующий ответ reurned от вызова AJAX для функции успехаИзвлечение данных в массив из Ajax вызова

{"0":"A", 
"1":"B", 
"2":"C", 
"saved_as":["M","K","L"]} 

Есть ли способ, чтобы иметь его в массив, как следующие

dataObj[0]="A"; 
dataObj[1]="B"; 
dataObj[2]="C"; 

на А боковые не возвращенные данные могут иметь больше, чем первые три элемента. Последний элемент всегда будет сохранен_s

Спасибо.

ответ

3

Если вы просто хотите, числовые свойства (которые будут иметь смысл), вы можете сделать это:

var array = []; 

for(var name in dataObj) { 
    if(!isNaN(+name)) { 
     array[ name ] = dataObj[ name ]; 
    } 
} 

DEMO:http://jsfiddle.net/hW8Jm/

(Я предполагаю, что данные JSON уже разобраны .)

Это перечисление свойств dataObj, попытки преобразования toNumber с использованием унарного +, а затем проверяет, есть ли результат NaN(не номер).

Если это не NaN(это номер), то значение этого свойства добавляется к массиву с использованием свойства как индекса массива.

+0

Я получаю ответ как string.How я конвертирую его в dataObj, чтобы я мог работать для цикла на нем? –

+0

@Sonesh Dabhi: Если вы используете методы AJAX jQuery, то, если вы просто передадите ему 'json' dataType, jQuery будет проверять его. В противном случае вы будете использовать 'var parsedObj = JSON.parse (dataObj)' для его анализа. Для поддержки старых браузеров вы можете включить [библиотеку JSON2] (https://github.com/douglascrockford/JSON-js/blob/master/json2.js). – user113716

+0

var dataObj = eval ('(' + data + ')'); Я не уверен, какая разница между ними, но это сработало. –

Смежные вопросы