放置在目录中时jQuery-JSONP插件失败

时间:2009-10-20 16:21:53

标签: javascript jquery jsonp

我有一个HTML页面,它使用JSONP Plugin来优雅地处理我的JSONP调用中的错误。我的问题非常令人困惑(我希望它有一个简单,容易的“D'Oh!”解决方案:))。 当.js文件与HTML页面位于同一目录中时,如下所示加载:

<script type="text/javascript" src="jquery.jsonp.min.js"></script>

一切运作良好。但是,如果我将它移动到内部JS目录,那里的所有其他JS文件都是:

<script type="text/javascript" src="js/jquery.jsonp.min.js"></script>

它总是调用错误函数。我用FireBug跟踪它并调用$.jsonp函数,但立即跳转到错误函数。 代码本身如下所示:

$.jsonp(
  {
    url: ipUrl, 
    timeout: 30000,
    success: displayData,
    error: displayError
  }
);

有什么想法吗?我真的想以有组织的方式运送它。谢谢你的时间。

一些事实:页面经过测试本地(没有网络服务器)。 无权限/安全问题。在同一目录中还有其他.js文件可以很好地加载。所有浏览器都会出错。

UPDATE :根据Alex的建议,我下载了未经编辑的版本并将其放入js目录中。我在HTML页面中更改了引用并使用FireBug进行了跟踪。功能DOES收到正确的URL并且实际上有效!
我从无人化的来回走向缩小,结果很清楚:在缩小版本中有些东西搞砸了!
仍然,我想知道什么可能螺丝钉以某种方式确定其位置的重要功能???我应该只运送未经发表的版本而忘记它吗?

更新2 - 解决方案:我自己缩小了打开的文件(我使用了Alex的链接来获取C# code for JSMin),我编译并最小化了文件 - 它起作用了。然后我将它与我下载的文件进行了比较 - 回车被搞砸了。再次下载文件 - 一切正常。

2 个答案:

答案 0 :(得分:2)

只是一个猜测,但如果ipUrl也是页面的本地(用于测试),那么当脚本从另一个目录添加时,它试图命中一个相对于其位置不存在的本地文件。这将立即抛出错误功能。

您可以使用非缩小版本的脚本进行调试并查看其尝试访问的网址吗?

答案 1 :(得分:0)

您是否尝试过明确设置callbackParameter

$.jsonp({
    url: ipUrl, 
    callbackParameter: 'nameOfTheCallbackParameterThatYourServerSideScriptExpects',
    timeout: 30000,
    success: displayData,
    error: displayError
});