2013-07-17 4 views
0

я получаю кучу данных в формате JSON через запрос XHR, и получить следующие данные обратно:печать Javascript в HTML с знаком процента

{"data_list" : [[1, "Title1", "0.54%"], [2, "Title2", "2.98%"]]} 

Тогда я пытаюсь Переберите эти данные, и поместить его в консоль с console.log:

var len = json.data_list.length; 
for(var i = 0; i < len; i++) 
{ 
    console.log(json.data_list[i]); 
} 

Но я не получаю те же проценты:

[1, "Title1", "0.24%"] 
[2, "Title2", "0.00%"] 

Кто знает, почему я бы получить правильные данные для первых двух полей, но не те же проценты? Даже если я выберу процентные знаки в ответе JSON, я все равно получаю неправильные цифры.

Предположим, что переменная действительна, я использую библиотеку, которая отображает json-переменную в json.data_list.

Я НЕ ТАК ЯРКО

Где запрос XHR получил искажаются додзё. Спасибо за помощь!

+0

Что библиотеки вы используете? Поскольку это строка, нет никаких оснований для изменения этого значения. Попробуйте выполнить повторную обработку полученных данных за пределами этой библиотеки. –

+0

Додзе, чтобы получить данные xhr. Таким образом, он отображает результат в переменную json, поэтому работа над json.data_list работает над этой частью json. Я попробую еще кое-что. – cwill747

+0

Он отлично работает http://jsfiddle.net/8nTUM/, поэтому ваша проблема должна быть где-то в другом месте (возможно, при преобразовании из JSON в объект?) – Christophe

ответ

3

«data-list» - недопустимый идентификатор, как вы ожидаете, что он действует, поэтому его интерпретируют как вычитание. Попробуйте использовать кронштейн обозначения:

json["data-list"].length 

и

json["data-list"][i] 

DEMO:http://jsfiddle.net/7bgvV/

+0

Извините, только что отредактировал OP. Предположим, что это допустимая переменная. Я использую библиотеку, которая сопоставляет ее с json.data_list. – cwill747

+0

@ cwill747 Вы не отредактировали вторую проблему - 'json.data-list [i]' – Ian

+0

Я отредактирую ее в OP, это не скопированный и вставленный код. Ради аргументации притворяются, что это работает. – cwill747

2

var len = json.data-list.length; выглядит как операции вычитания на JavaScript VM. Вы должны использовать этот метод: json['data-list'].length.

Если вы не имеете никакого контроля над методом возвращающей эти данные, попробовать что-то вроде этого:

var ajaxStr = '{"data-list" : [[1, "Title1", "0.54%"], [2, "Title2", "2.98%"]]}]'; 
ajaxStr = ajaxStr.replace(/\"([\w]+)-([\w]+)\"/g, "\"$1$2\""); 
+0

Извините, только что отредактировал OP. Предположим, что это допустимая переменная. Я использую библиотеку, которая сопоставляет ее с json.data_list. – cwill747

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