2012-06-18 3 views
2

У меня есть веб-сервис, который возвращает эту строку через jQuery $.ajax() вызов в успех обратного вызова:Преобразование этой строки в массив объектов JSON с помощью JQuery

[{"WaitlistID":1,"RID":45034,"CustomerID":2765957, 
"IsAdmin":false,"TruckSize":1,"Points":1}, 
{"WaitlistID":2,"RID":45034,"CustomerID":2765957, 
"IsAdmin":false,"TruckSize":1,"Points":1}] 

К сожалению, если я позвоню $.each() этого значения в обратный вызов его итерации по каждой букве в нем и не рассматривают его как массив из двух элементов, что мне бы хотелось. Я пробовал функцию makeArray(), но мне не повезло, как я могу преобразовать эту строку в массив объектов JSON?

редактировать:

В ответ на замечания (спасибо, каждый) я уже делаю установить DATATYPE к «», JSON является нечетным. Вот код, о котором идет речь.

jQuery.ajax({ 
    type: "POST", 
    url: pagePath + "/" + fn, 
    contentType: "application/json; charset=utf-8", 
    data: paramList, 
    dataType: "json", 
    success: successFn, 
    error: errorFn 
}); 

..so Я не знаю, почему он не работал изначально, но немного parseJSON() сделал трюк. Цените помощь каждого.

+1

Вы пробовали 'JSON.parse'? –

+1

Ваш вызов ajax настроен неправильно. Используйте 'dataType: json'. Он проанализирует json для вас и предоставит вам объект в качестве параметра функции 'success()'. –

+1

Показать ваш вызов ajax. –

ответ

4

Вы можете использовать jQuery.parseJSON разобрать его:

var obj = $.parseJSON(str); 

Однако JQuery уже должны сделать это для вас, если сервер возвращает правильный тип содержимого. Если это не так, вы можете указать JQuery для лечения ответ как JSON:

$.get("test.php", function(data){ 
    // callback 
}, "json"); 

Или еще лучше, использовать jQuery.getJSON. Ваш отзыв будет первым!

1

Постарайтесь разобрать jQuery.parseJSON()!

+0

Да, только что нашел этот метод и возвращался сюда, чтобы ответить на мой собственный вопрос. Благодаря! – larryq

+0

Лучше использовать 'dataType: json' в вызове' $ .ajax() '. Вам не обязательно вступать в 'parseJSON()' таким образом. –

+0

@larryq Вместо 'parseJSON' вы должны добавить' dataType: 'json'' параметр '$ .ajax' –

1

Что вам нужно, это строка. Попробуйте установить dataType в $.ajax.

$.ajax({ 
    url: blahblah, 
    dataType: 'json', 
    ... 
}); 
+0

У меня есть dataType, установленный в json, что сделало мою оригинальную проблему всем незнакомцем. Спасибо за помощь. – larryq

+0

@larryq, пожалуйста, покажите свой призыв ajax в сообщении. –

1

У вас есть:

success: successFn 

Существует ли successFn(), и будет ли он принимать параметр? I.e., определяется ли оно как function successFn(myObject)? Если да, то myObject будет содержать объект, описываемый строкой JSON. Нет необходимости в синтаксическом анализе.

+0

Ах, спасибо Джонатан. – larryq