我遇到两个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;”在所有这一切结束时,以防止链接执行。
如果要查看源代码,则所有其余代码都在该页面上内联。
任何想法??
由于
答案 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(...)