【问题标题】:Problems with jQuery load and getJSON only when using Chrome仅在使用 Chrome 时出现 jQuery 加载和 getJSON 问题
【发布时间】:2011-02-21 05:54:36
【问题描述】:

我遇到了两个 jQuery 调用的问题。第一个是“加载”,它检索 HTML 并将其显示在页面上(它确实在返回的代码中包含一些 Javascript 和 CSS)。第二个是返回 JSON 的“getJSON”——返回的 JSON 是有效的。

在我尝试过的所有其他浏览器中一切正常 - 除了适用于 Windows 或 Mac 的 Chrome。有问题的页面在这里:

http://urbanistguide.com/category/Contemporary.aspx

当您在 IE/FF 中单击餐厅名称时,您应该会看到该项目展开并显示更多信息 - 并且地图显示在右侧。但是,如果您在 Chrome 中执行此操作,您得到的只是打印到屏幕上的 JSON 数据。

第一个问题点是这里调用“load”函数的时候:

    var fulllisting = top.find(".listingfull");
    fulllisting.load(href2, function() {
       fulllisting.append("<div style=\"width:99%;margin-top:10px;text-align:right;\"><a href=\"#\" class=\"" + obj.attr("id") + "\">X</a>");
       itemId = fulllisting.find("a.listinglink").attr("id");

...

在上面的代码中,回调函数似乎没有被调用。

第二个问题点是调用“getJSON”函数时:

$.getJSON(href, function(data) {
    if (data.error.length > 0) {
        //display error message
    }
    else {
        ...
    }

在这种情况下 - 它似乎只是跟随链接而不是执行回调......是的,我正在执行“return false;”在所有这些结束时防止链接执行。

如果您想查看源代码,所有其余代码都内联在该页面上。

有什么想法吗??

谢谢

【问题讨论】:

  • 不是您问题的真正答案,但如果您还没有这样做,可能值得在 Safari 中尝试,因为它也是基于 Webkit 的浏览器。这样您至少会知道是 Webkit 行为还是 Chrome 特性,这可能有助于您寻找解决方案。
  • 你说得对——我应该在上面提到这一点。它在 Safari 中运行良好......到目前为止,我唯一遇到的问题是在使用 Chrome 时。

标签: jquery json google-chrome getjson


【解决方案1】:

loadBusiness(obj, doScrollTo) 中将top = obj.parent().parent().parent() 重新声明为var top = obj.parent().parent().parent()

你现在拥有它的方式是指全局变量top,就像在 window.xml 中一样。因为它是一个特殊的变量,Chrome 不允许你重新定义它。当您运行var fulllisting = top.find(".listingfull") 时,您实际上是在运行var fulllisting = window.find(".listingfull")(检查https://developer.mozilla.org/en/DOM/window.find)。这个方法返回false然后这里抛出异常:fulllisting.load(...)因为和false.load(...)一样

【讨论】:

    【解决方案2】:

    Chrome 过于严格,无法识别格式错误的 JSON 对象,与其他浏览器不同。

    i.e. {"list":["abc","def",]}
    

    你必须把它改成

    {"list":["abc","def"]}
    

    {"list":["abc","def",""]}
    

    当然要省略最后一个。

    【讨论】:

    • 感谢您的回答,非常抱歉我迟到的回复 - 但我没有看到我的 JSON 格式错误。以下是该网站的示例:
    • 这里:{ "error":"", "title":"ALCHEMY", "addressShort":"1503 30th St", "address":"1503 30th St, San Diego, CA, 92102", "isFeatured":true, "imagePath":"/pix/listing/128871917553593750_Alchemy.jpg", "phone":"619.255.0616", "hoursOfOperation":"", "openSince":"Feb 2009", "websiteUrl":"/LinkGo.aspx?n=318", "shortSummary":"Buzzworthy 休闲餐厅,提供多样化的菜单、创意鸡尾酒(培根血腥玛丽!)和诱人的酒单。" }
    • 您可以在此站点jsonlint.com 中检查 JSON 数据的有效性,但是在这种情况下您的 JSON 数据看起来不错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2017-09-17
    • 2013-03-14
    相关资源
    最近更新 更多