2012-01-19 6 views
0

Я пытаюсь разобрать JSON-документ с помощью JQuery, но вещи просто не идут моим путем. Канал, который я хочу получить, находится по адресу «http://marketplace.envato.com/api/edge/new-files-from-user:collins,themeforest.json» и вот результат возврата:Нужна помощь в Parsing JSON с JQuery

{ 
"new-files-from-user":[ 
    { 
    "thumbnail":"http://3.s3.envato.com/files/60560.jpg", 
    "tags":"", 
    "user":"collis", 
    "url":"http://themeforest.net/item/manilla-photoshop-design/22803", 
    "live_preview_url":"http://2.s3.envato.com/files/60561/1_Home.__large_preview.jpg", 
    "uploaded_on":"Wed Dec 03 03:32:35 +1100 2008", 
    "cost":"10.00", 
    "item":"Manilla Photoshop Design", 
    "sales":"294", 
    "rating":"4", 
    "id":"22803" 
    }, 
    { 
    "thumbnail":"http://2.s3.envato.com/files/60223.jpg", 
    "tags":"clean", 
    "user":"collis", 
    "url":"http://themeforest.net/item/black-white-simple-theme/22705", 
    "live_preview_url":"http://0.s3.envato.com/files/60224/1_home.__large_preview.jpg", 
    "uploaded_on":"Tue Dec 02 04:01:12 +1100 2008", 
    "cost":"8.00","item":"Black + White Simple Theme", 
    "sales":"272"," 
    rating":"4", 
    "id":"22705" 
    }, 
    { 
    "thumbnail":"http://1.s3.envato.com/files/44556.jpg", 
    "tags":"clean", 
    "user":"collis", 
    "url":"http://themeforest.net/item/quik-v1-admin-skin/17314", 
    "live_preview_url":"http://3.s3.envato.com/files/44557/1_green.__large_preview.jpg", 
    "uploaded_on":"Fri Sep 05 07:30:24 +1000 2008","cost":"12.00", 
    "item":"Quik v1 Admin Skin", 
    "sales":"336", 
    "rating":"5", 
    "id":"17314" 
    }, 
    {"thumbnail":"http://3.s3.envato.com/files/45212.jpg", 
    "tags":"clean", 
    "user":"collis", 
    "url":"http://themeforest.net/item/freshcorp-business-template/17528", 
    "live_preview_url":"http://3.s3.envato.com/files/45213/1_Homepage.__large_preview.jpg", 
    "uploaded_on":"Tue Sep 09 06:10:50 +1000 2008", 
    "cost":"20.00", 
    "item":"FreshCorp - Business Template", 
    "sales":"277", 
    "rating":"4","id":"17528" 
    }, 
    {"thumbnail":"http://0.s3.envato.com/files/45739.jpg", 
    "tags":"clean", 
    "user":"collis", 
    "url":"http://themeforest.net/item/real-estate-html-template/17732", 
    "live_preview_url":"http://0.s3.envato.com/files/45740/1_homepage.__large_preview.jpg", 
    "uploaded_on":"Fri Sep 12 14:22:45 +1000 2008", 
    "cost":"20.00","item":"Real Estate HTML Template", 
    "sales":"175", 
    "rating":"4", 
    "id":"17732" 
    } 
] 
} 

Я нашел сценарий готовой сборки, который создает таблицу и добавляет к ней элементы JSON (см. Ниже), но то, что я действительно хотел бы сделать, это просто создать мой собственный div, возможно, с изображением, с названием и ссылкой к элементу. Я пробовал бесчисленные учебники и также читал JQuery API, я просто не могу заставить его работать. Может кто-нибудь мне помочь?

<table id="userdata" border="1"> 
    <thead> 
     <th>Thumbnail URL</th> 
     <th>Item URL</th> 
     <th>Cost</th> 
     <th>Number of Sales</th> 
    </thead> 
    <tbody> 
    </tbody> 

</table> 

<script> 
$(document).ready(function(){ 
    $.getJSON(
     "http://marketplace.envato.com/api/edge/new-files-from-user:collins,themeforest.json", 
     function(data){ 
      $.each(data.new-files-from-user, function(i,user){ 
       var tblRow = 
        "<tr>" 
        +"<td>"+user.thumbnail+"</td>" 
        +"<td>"+user.url+"</td>" 
        +"<td>"+user.cost+"</td>" 
        +"<td>"+user.sales+"</td>" 
        +"</tr>" 
       $(tblRow).appendTo("#userdata tbody"); 
      }); 
     } 
    ); 
}); 
</script> 
+1

что не работает? где он ломается? – hvgotcodes

+0

Что вы думаете? – Hamish

+0

Я не знаю, где он ломается. Я добавил скобки к свойству «new-files-from-user», но ничего не работает. Я пытаюсь получить доступ к фиду JSON и выплевывать свои последние товары для продажи на Themeforest – Matt

ответ

4
data.new-files-from-user 

Это некорректный JavaScript прямо там. Свойства объекта недоступны, если у них есть тире. Переводчик JS видит, что как это:

data.new - files - from - user 

И конечно data.new не определено и undefined минус не существует локальная переменная вызывает исключение.

Используйте вместо этого синтаксис []. Это позволяет вам получить доступ к свойствам, которые не являются законными для нотации точек доступа.

data['new-files-from-user'] 
+0

Может ли быть что-то еще не так с моим кодом? Я положил свойство в скобки, но он все еще не хочет работать: http://jsfiddle.net/2vyfg/ – Matt

+0

'data. ['New-files-from-user']'! = 'Data ['new-files -из-пользователя ']'. Консоль Javascript в любом современном браузере - ваш друг. –

+0

Я удалил период, теперь консоль Chrome показывает, что XMLHttpRequest не может загрузить http://marketplace.envato.com/api/edge/new-files-from-user:collins,themeforest.json. Происхождение http: // localhost: 8888 не разрешено Access-Control-Allow-Origin. ' Спасибо за вашу дальнейшую помощь до сих пор * EDIT: * Я думаю, это может быть из-за запятой в URL-адрес JSON, но я не уверен, как это исправить. – Matt

1

Вы не можете вызвать свойство по точечной нотации, если он имеет черточки:

data.new-files-from-user 

Прочерк представляет собой оператор вычитание.

Try:

data['new-files-from-user'] 
+0

Есть ли что-то еще, что мне не хватает? Я сделал предложенные изменения и все еще не писал в таблицу http://jsfiddle.net/2vyfg/ – Matt

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