【问题标题】:Ajax query to fetch json data获取 json 数据的 Ajax 查询
【发布时间】:2017-09-13 01:51:26
【问题描述】:

我正在尝试从一个 api 中获取标题,但出现了一些错误。这是我第三次使用 ajax。 请让我知道我哪里做错了。

这是我的代码。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Search Movies</title>
    <style type="text/css">
        #movieTemplateContainer div
        {
            width:500px;
            padding: 10px;
            margin: 10px;
            border: black solid 1px;
        }

    </style>
</head>
<body>
<label>Search Movies:</label>
<input id="movieName" size="50" />
<button id="btnLookup">Lookup</button>

<div id="movieTemplateContainer"></div>

  <script id="movieTemplate" type="text/x-jquery-tmpl">
<div>      
         <img src="${BoxArt.LargeUrl}" />
        <strong>${Name}</strong>
        </br>
        <button id="playButton" movieID=${NetflixApiId} onclick="play(this)">Play Now</button>
        <p>
        {{html Synopsis}}
        </p>
  </div>  
</script>

  <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="jquery.tmpl.js"></script>
    <script type="text/javascript">

    $("#btnLookup").click(function () {

        // Build OData query
        var movieName = $("#movieName").val();
        var query = "http://netflixroulette.net/api/api.php?" // netflix base url
        + "title=" + escape(movieName) // top-level resour

        // Make JSONP call to Netflix
     $.ajax({
            dataType: "jsonp",
            url: query,
            jsonpCallback: "callback",
            success: callback
            });
        });

    function callback(result) {
        // unwrap result
        var movies = result.d.results;

        $("#movieTemplateContainer").empty();
        $("#movieTemplate").tmpl(movies).appendTo("#movieTemplateContainer");
    }

    </script>


<script src="http://jsapi.netflix.com/us/api/js/api.js"></script>


</body>
</html>

我正在使用这个API

请告诉我如何修复错误。

【问题讨论】:

  • "但出现一些错误" ...什么错误?请明确点!花点时间阅读How to Ask
  • Jsonp 不是数据类型
  • @Vivick 当然是

标签: jquery json ajax netflix


【解决方案1】:

删除数据类型中的 p。 JSONP 指的是 JSON 填充。还有一个很好的做法是包含一个错误函数,这样即使失败也能看到数据:

  $.ajax({
            dataType: "json",
            url: query,
            jsonpCallback: "callback",
            success: callback,
            error: failed
        });
    });

    function callback(result) {
        console.log(result);
        // unwrap result
        var movies = result.d.results;

        $("#movieTemplateContainer").empty();
        $("#movieTemplate").tmpl(movies).appendTo("#movieTemplateContainer");
    }

    function failed(xhr, ajaxOptions, thrownError) {
    alert(xhr.status);
    alert(thrownError);
  }

【讨论】:

  • “删除数据类型中的 p。JSONP 指的是 JSON 填充” 为什么?只有一个参数的错误处理程序不会告诉你任何有用的信息......
  • 谢谢它正在工作,但我没有在 Html 中获取数据。在控制台中我得到了。你能帮我解决这个问题吗?
  • 返回的对象有参数。所以在你的 jquery 中它应该显示如下数据:result.director、result.show_cast 等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2012-04-10
  • 1970-01-01
  • 2015-08-17
相关资源
最近更新 更多