无法使用Javascript从易趣API响应中检索值

Unable to retrieve values from eBay API response using Javascript

本文关键字:响应 API 检索 易趣 Javascript      更新时间:2023-09-26

我正在尝试构建一个非常简单的工具,以便在工作中使用。我在易趣工作,目前可用的工具对这项任务来说很麻烦。我们被要求比较文本和图像,以检查卖家是否在窃取对方的内容。我使用的是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>"

如果您认为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;

我希望这能有所帮助。请查看常见问题解答;Imho这个问题不在这个网站的范围内(这个问题真的很窄,不太可能帮助其他人)。我推荐Mozilla开发者网络作为了解更多JavaScript的来源。