仅在使用Chrome时出现jQuery load和getJSON问题

时间:2010-05-19 06:43:47

标签: jquery json google-chrome getjson

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

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

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

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

第一个问题点是在这里调用“加载”函数时:

    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 {
        ...
    }

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

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

任何想法??

由于

2 个答案:

答案 0 :(得分:0)

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

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

你必须把它改成

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

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

当然省略了最后一个。

答案 1 :(得分:0)

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

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

相同