Javascript: JSON для цикла - PullRequest
       9

Javascript: JSON для цикла

1 голос
/ 21 января 2010

Следующий Javascript отображается в Safari, но не в Mobile Safari. Кто-нибудь может увидеть какие-либо ошибки?

$("#results").append(data);

var songdata = JSON.parse(data);

var i = 0;

for (i=0;i<=songdata.total;i++)
{
    alert(i);
    var songhtml = "<ul><li><img src=\"" + songdata.data[i].artwork + "\" /></li><li>" + songdata.data[i].title + "</li><li>" + songdata.data[i].artist + "</li><li>" + songdata.data[i].length + "</li><li>" + songdata.data[i].listen + "</li></ul>";
    $("#results").append(songhtml);

}

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 21 января 2010

JSON.parse не является официальным Javascript, он поддерживается не во всех браузерах. Это может быть вашей проблемой, но у меня нет мобильного сафари для тестирования.

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Загрузите этот файл и

<script type="text/javascript" charset="utf-8" src="/js/JSON2.js"></script>
1 голос
/ 21 января 2010

У меня второй комментарий MindStalkers. Держу пари, что вы используете не кросс-браузер JSON.parse. В дополнение к этому ваша структура цикла выглядит подозрительно - к тому же мне не имеет особого смысла, почему вы используете стандартный цикл вместо jQuery.each().

0 голосов
/ 21 января 2010

for (i=0;i<=songdata.total;i++) выглядит подозрительно для меня. Вы начинаете с нуля, но продолжаете равным или большим, чем total, поэтому вы собираетесь зацикливаться total + 1 раз. (Я так понимаю, это не массив JavaScript / JSON, так как вы используете total вместо length.)

Если total говорит вам, сколько существует записей, и если записи начинаются с 0, тогда используйте просто <. Если записи начинаются с 1, сделайте это. :-) Но если вы ссылаетесь на неверный songdata[i], то songdata[i].artwork не удастся, потому что songdata[i] будет неопределенным.

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