Как разобрать набор записей с помощью jQuery? - PullRequest
1 голос
/ 22 ноября 2011

Я использую ColdFusion 9.0.1 и jQuery 1.6.2.

Я звоню, используя CFAJAXPROXY и jQuery, как это:

var jro = new jsApp();
MyResults = jro.getProductPricing(CustomerID, OrderID, ProductID);

Я всегда получу один результат назад,Вот пример результата, который я получаю:

{"COLUMNS":["PRICE","POINTS","BV","DESCRIPTION"],"DATA":[[14.990000,6.8,6.00,"CLEAR VANILLA 11OZ-325ML"]]}

Когда я получу этот результат обратно, мне нужно проанализировать его и заполнить участки на странице.

Я никогда не пытался анализировать JSON таким образом.Кажется, что анализ должен быть очень простым, но каждый пример, который я вижу, делает его похожим на ракетостроение.Как использовать jQuery, чтобы получить доступ к столбцам PRICE, POINTS, BV и DESCRIPTION?Есть ли плохой способ сделать это?Какой хороший способ?

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

Есть setQueryFormat('column'), которые вы можете вызвать перед вызовом веб-службы, чтобы результирующий объект JSON был легче доступен или манипулировать им, но обратной стороной этого является то, что результирующая строка JSON будет больше, потому что имена столбцов повторяются для каждой записи в наборе записей.

Если вы используете тег cfajaxproxy и вызываете объект прокси Функция setQueryFormat со значением параметра столбца ColdFusion привязка на стороне клиента и прокси-код не преобразуют данные формата столбца в JavaScript, который потребляется непосредственно сетками HTML. Тем не менее, используйте этот формат с тегом cfajaxproxy, потому что вы можете обратиться к возвращает данные, используя имена столбцов напрямую. Например, если Функция CFC возвращает запрос с данными пользователя, вы получаете имена пользователей в ваш JavaScript, указав такие значения, как userData.firstName[0] и userData.lastName[0].

CF Dev Doc: Использование форматов обмена данными -> Управление форматом данных удаленного возвращаемого значения CFC

0 голосов
/ 22 ноября 2011

В этом коде предполагается, что MyResults является объектом JS, а не строкой JSON.Если вы еще не десериализовали JSON в объект JS, то сделайте так, как предлагает ShankarSangoli, и сначала запустите его через parseJSON: MyResults = $ .parseJSON (MyResults);

queryIndex = new Object();
for (var i = 0; i < MyResults["COLUMNS"].length; i++)
{
    queryIndex[MyResults["COLUMNS"][i]] = i;
}

for (i = 0; i < MyResults["DATA"].length; i++)
{
    $('span#foo').text('Price: '+ MyResults["DATA"][i][queryIndex["PRICE"]]);
    $('span#bar').text('POINTS: '+ MyResults["DATA"][i][queryIndex["POINTS"]]);
    // etc....

}
0 голосов
/ 22 ноября 2011

Он выглядит как правильно сформированный объект JSON и может быть легко доступен.Если он имеет форму строки, вы можете использовать метод $.pareseJSON() для анализа строки в объекте JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...