【问题标题】:$.getJSON not working in jQuery 1.10.2?$.getJSON 在 jQuery 1.10.2 中不起作用?
【发布时间】:2014-02-06 18:57:37
【问题描述】:

我正在尝试使用 jQuery 加载一些 JSON,但根据我使用的 jQuery 版本,我得到的结果好坏参半。

第一页 (http://iaviglobal.com/json-3.html) 使用 jQuery 1.8.3 并且运行良好!该页面上的所有内容都是从我服务器上的 .json 文件中提取的。

然而,我的第二页 (http://iaviglobal.com/json-4.html) 使用 jQuery 1.10.2 和 jQuery Migrate 1.2.1。我的 JSON 调用在这里不起作用!这是我的代码:

  $.getJSON('/json/products.json', function(data) {
  alert ("json loaded");
        var output="";
        for (var i in data.products) {
            output+="<div class='product-line-item wrapper'><div class='product-image'><img src='/img/" + data.products[i].fileName + ".png alt='' width='150' height='100'></div><div class='product-model'>" + data.products[i].modelNumber + "</div><div class='product-specs'><ul><li>" + data.products[i].brightness + " Lumens</li><li>" + data.products[i].resolution + " Resolution</li><li>" + data.products[i].contrast + " Contrast Ratio</li></ul></div><a class='get-a-quote trigger-quote-modal'>Get a Quote</a><a class='download-pdf' href='/download/" + data.products[i].fileName + ".pdf'>Download PDF</a></div>";
        }

        output+="";
        document.getElementById("product-line-container").innerHTML=output;
  });

谁能向我解释发生了什么变化?我认为自 1.8.3 以来有些东西已被弃用,但我不知道是什么。

我在这里创建了第三个页面:http://iavi.com/glored/json-5.html。此页面已精简,仅包含一个脚本来通知我 jQuery 是否成功加载,然后是来自 http://api.jquery.com/jquery.getjson/ 的 JSON 代码逐字结合 jQuery 1.10.2 和 jQuery Migrate 1.2.1。

$.getJSON( "ajax/test.json", function( data ) {
  var items = [];
  $.each( data, function( key, val ) {
    items.push( "<li id='" + key + "'>" + val + "</li>" );
  });

  $( "<ul/>", {
    "class": "my-new-list",
    html: items.join( "" )
  }).appendTo( "body" );
});

还是不行!

控制台只说“未捕获的类型错误:无法调用未定义的方法‘getJSON’”

【问题讨论】:

  • 第一页对我来说很好,在第二页中$ 未定义,但jQuery 可用,因此您可以将代码包装在jQuery(function($) {...
  • “控制台只显示“未捕获的类型错误:无法调用未定义的方法‘getJSON’””重新读取该错误。它完全解释了为什么您的 ajax 请求不起作用。 getJSONundefined 上不存在。这意味着 $undefinedundefined 预计没有 getJSON 方法。您要么没有包含 jquery,要么已将其置于无冲突模式。
  • @KevinB 事情是 jQuery 已加载(页面加载时弹出的警报证实了这一点,对吗?)。而且您还暗示问题可能在于我已将 jQuery 置于无冲突模式。但是这里的其他两个回复表明我确实将其置于无冲突模式来修复它。那么它是哪一个?就像我的帖子说的那样,我在两个不同的页面上加载了完全相同的代码。并且只有加载 jQuery 1.10.2 的页面不起作用。 1.8.2 工作正常!
  • 我只是在指出事实。而且,答案/cmets 并没有告诉您将其置于无冲突模式,而是告诉您编写代码,就好像它已经处于无冲突模式一样(通过查看错误消息,建议它实际上处于无冲突模式。)如果他们告诉您将其置于无冲突模式,他们会告诉您使用$.noConflict()(这不是必需的,不要妄下结论)跨度>

标签: jquery ajax getjson


【解决方案1】:

看起来可能是语法错误,尝试在无冲突模式下使用 jQuery: jQuery(document).ready(function ( $ )

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多