jquery脚本没有在html中执行

时间:2017-04-15 16:26:37

标签: javascript jquery html ajax api

我正在尝试从Movie DB API中检索信息,并且jquery代码似乎没有执行。我认为我的JSON代码可能已关闭,但在重要功能之前进行测试后,我意识到它并没有被运行。这是脚本:

<script type="text/javascript">
//test 0
$("#title").html('<h1>JS Loaded</h1>');
$(document).ready(function(){
  //test 1
  $("#title").html('<h1>Document Ready</h1>');
  var getPoster = function(){
    //test 2
    $("#title").html('<h1>Get poster Executed</h1>');
    $.getJSON(
    "http://api.themoviedb.org/3/discover/movie?with_cast=31&sort_by=popularity.desc&api_key=d34d1c194fd655e99cc15a631bad6760&page=1",
   function(data) {
     if (data != "Nothing found."){
       $('#poster').html('<img alt="Film/Show Poster" width="101px" height="150px" src=' + data.results[0].poster_path + ';>');
     } else {
       $('#title').html('<h1>NO POSTER WAS FOUND</h1>');
     }
    });
  }
  $('#poster').click(getPoster);
});

jQuery在标题中声明,如下所示:

script src =&#34; https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"完整性=&#34; SHA256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4 =&#34; crossorigin =&#34;匿名&#34;&GT;

对此问题的任何见解都将非常感激。

3 个答案:

答案 0 :(得分:0)

我在类似的情况下发生过这种情况,除了一个get和一个帖子。我最终只是换成ajax电话。试试这个:

$.ajax({
  dataType: "json",
  url: "http://api.themoviedb.org/3/discover/movie?with_cast=31&sort_by=popularity.desc&api_key=d34d1c194fd655e99cc15a631bad6760&page=1",
  success: (data) => {
if (data != "Nothing found."){
       $('#poster').html('<img alt="Film/Show Poster" width="101px" height="150px" src=' + data.results[0].poster_path + ';>');
     } else {
       $('#title').html('<h1>NO POSTER WAS FOUND</h1>');
     }
},
});

请不要在此引用我,因为它在文档中没有明确说明,但我认为.getJSON()调用具有get发回的响应作为第二个参数,不是你从端点获得的实际响应数据。

答案 1 :(得分:0)

在所有概率中,这只是与CORS相关的错误。

您的AJAX请求失败,因为请求的来源(由您的html文件中的JavaScript生成)和API服务器是“Cross Origin”(基本上是不同的域和/或端口),并且浏览器倾向于限制“资源”为安全而在他们之间分享。

如果您使用的是Chrome,请尝试添加CORS Toggler之类的扩展程序,启用它并重试。

答案 2 :(得分:0)

好的,我发现了问题,现在我觉得自己像个白痴。我的测试试图引用一个HTML ID而不是一个html类,所以我认为这是一个jquery问题。事实证明,我需要额外的一部分网址来检索图像。 TMDb API现在运行正常,感谢您的帮助!