2

我有一个 HTML 页面,它使用JSONP 插件来优雅地处理我的 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
  }
);

有任何想法吗?我真的很想以有组织的方式运送这个。谢谢你的时间。

几个事实:页面是在本地测试的(没有 Web 服务器)。没有权限/安全问题。同一目录中还有其他加载良好的 .js 文件。该错误发生在所有浏览器中。

更新:根据亚历克斯的建议,我下载了未缩小的版本并将其放在 js 目录中。我更改了 HTML 页面中的引用并使用 FireBug 进行了跟踪。该函数确实接收到正确的 URL 并且确实有效!
我从未缩小到缩小来回走动,结果很清楚:缩小版本搞砸了!
不过,我想知道什么会以它的位置很重要的方式搞砸一个功能???我应该只发布未缩小的版本而忘记它吗?

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

4

2 回答 2

2

只是一个猜测,但如果 ipUrl 也是页面本地的(用于测试),那么当脚本从不同的目录添加时,它可能会尝试访问相对于其位置不存在的本地文件。那会立即抛出错误函数。

您可以使用脚本的非缩小版本进行调试并查看它试图访问的 url 吗?

于 2009-10-20T16:42:12.313 回答
0

您是否尝试过明确设置callbackParameter

$.jsonp({
    url: ipUrl, 
    callbackParameter: 'nameOfTheCallbackParameterThatYourServerSideScriptExpects',
    timeout: 30000,
    success: displayData,
    error: displayError
});
于 2009-10-20T16:42:55.370 回答