Невозможно получить значения из ответа eBay API, используя Javascript - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь создать очень простой инструмент для использования на моей работе. Я работаю на eBay, и в настоящее время доступные инструменты громоздки для этой задачи. Нас просят сравнить текст и изображения, чтобы убедиться, что продавцы не крадут контент друг друга. Я использую eBay Trading API и пример кода HTML / CSS / Javascript, который был указан при создании учетной записи разработчика. В конечном счете, я надеюсь достичь простой страницы, которая отображает фотографию и описание двух предметов рядом друг с другом. Однако сейчас я просто пытаюсь отредактировать приведенный пример кода для отображения даты начала аукциона.

У меня такой вопрос: я пытаюсь добавить переменную, значение которой определяется ответом от API. однако некоторые из них представлены в примере, когда я добавляю свой собственный var starttime = items.listingInfo.startTime в функцию и добавляю переменную в таблицу HTML, ни одна из данных не отображается, включая те, которые отображались до моего добавления. К сожалению, у меня нет более чем элементарного понимания javascript, и поэтому я не уверен, правильно ли я сформулировал этот вопрос, не говоря уже о том, чтобы получить правильный синтаксис моего добавления. Что я делаю неправильно?

ниже приведен пример текста с моим добавлением одной объявленной переменной (starttime) и одного добавления в таблицу HTML

<html>
<head>
<title>eBay Search Results</title>
<style type="text/css">body { font-family: arial,sans-serif;} </style>
</head> 
<body>
<h1>eBay Search Results</h1>
<div id="results"></div>

<script>
function _cb_findItemsByKeywords(root)
{
  var items = root.findItemsByKeywordsResponse[0].searchResult[0].item || [];
  var html = [];
  html.push('<table width="100%" border="0" cellspacing="0" cellpadding="3"><tbody>');

  for (var i = 0; i < items.length; ++i)  
  {
    var item     = items[i];
    var title    = item.title;
        var viewitem = item.viewItemURL;
    var starttime = items.listingInfo.startTime;

    if (null != title && null != viewitem)
    {
      html.push('<tr><td>' + '<img src="' + pic + '" border="0">' + '</td>' + 
        '<td><a href="' + viewitem + '" target="_blank">' + title + '</a>' + starttime + '</td></tr>');
    }
  }
  html.push('</tbody></table>');
  document.getElementById("results").innerHTML = html.join("");
}
</script>

<!--
Use the value of your appid for the appid parameter below.
-->
<script src=http://svcs.ebay.com/services/search/FindingService/v1?SECURITY-APPNAME=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&OPERATION-NAME=findItemsByKeywords&SERVICE-VERSION=1.0.0&RESPONSE-DATA-FORMAT=JSON&callback=_cb_findItemsByKeywords&REST-PAYLOAD&keywords=iphone%203g&paginationInput.entriesPerPage=3>
</script>
</body>
</html>"

1 Ответ

1 голос
/ 01 марта 2012

Если вы считаете, что listingInfo является свойством отдельных элементов, и что это объект, обладающий свойством startTime, то правильный синтаксис:

var item     = items[i];
var title    = item.title;
var viewitem = item.viewItemURL;
var starttime = item.listingInfo.startTime;

В данный момент вы ссылаетесь items, который является массивом элементов, а не отдельным элементом.

Обновление

Я смотрел на это через URL , который вы указали в комментариях.Решение этой конкретной проблемы таково:

var starttime = item.listingInfo[0].startTime;

Надеюсь, это поможет.Пожалуйста, просмотрите FAQ;Имхо этот вопрос выходит за рамки этого сайта (вопрос действительно довольно узкий, и вряд ли кому-то еще поможет).Я рекомендую Сеть разработчиков Mozilla в качестве источника для получения дополнительной информации о JavaScript.

...