0

我有这个子句在特定条件下执行脚本;

//if artist page clicked run profile script
if (id == 'artist_link') {
        $.getScript("AJAX/get_profile.js");
}

我遇到的问题是脚本通常不会完全执行。有时什么都不会被执行,有时只会执行一部分。我真的无法提供比这更多的细节。奇怪的是,当萤火虫打开时它总是完全执行,我找不到任何问题。我测试过并且都有这个问题的浏览器是 chrome 和 firefox

带有get_profile.js文件的jsfiddle 。

4

3 回答 3

1

我可能是错的,但据我所知,$(location)它不是有效的 jQuery。替换$(location).attr('pathname')为 justwindow.location.pathname会消除可能的错误。

其他一些一般性的东西,它们不应该真正影响它是否有效,但值得一提的是提高整体美观度:

  • data从 JSON 调用返回的是一个对象,而不是一个数组。要访问DP它的元素以显示图片,您应该使用data.DPnot data['DP'](same forname和其他几个元素
  • .click()已弃用,.on()改为用于绑定事件
  • 您正在遍历一个集合 ( $.each (data, function(key, val){) 并且在循环内部,正在修改 DOM ( $.append()) - 您最好在循环期间构建一个 HTML 字符串,然后在循环之后将其添加到单个追加中,如DOM 插入对性能来说很慢
  • 您多次使用同一个选择器(请参阅$('#origin')参考资料),这导致 jQuery 每次都必须查找元素。要么缓存它,然后调用它的方法:
    • $origin = $('#origin');
  • 或链调用相同的元素:
    • $('#origin').html('a').append('b').append('c');
于 2012-10-29T23:39:21.867 回答
0

我几乎 100% 确定您的 get_profile.js 文件中某处存在错误。如果它正在执行,那么文件的加载没有任何问题。问题存在于您的 js 文件中,如果不查看其中的代码,我们将无法真正调试它。

于 2012-10-29T22:56:10.997 回答
0

解决它!我不知道为什么我没有看到这个,但是在页面被 ajaxed 之前脚本被 ajaxed 导致脚本变得不起作用。无论如何,我已经修复了它。谢谢您的帮助!

于 2012-10-29T23:37:09.150 回答