代码之家  ›  专栏  ›  技术社区  ›  Traveling Tech Guy

jquery jsonp插件放在目录中失败

  •  2
  • Traveling Tech Guy  · 技术社区  · 15 年前

    我有一个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>
    

    它总是调用错误函数。我用萤火虫追踪它,它叫 $.jsonp 函数,但立即跳到错误函数。 代码本身如下所示:

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

    有什么想法吗?我真的很想以有组织的方式发货。谢谢你抽出时间。

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

    更新 :根据Alex的建议,我下载了未完成的版本并将其放到JS目录中。我更改了HTML页面中的引用,并使用Firebug进行了跟踪。该函数确实收到了正确的URL,并且实际工作!
    我来回地从未完成到缩小,结果很清楚:缩小版本中有什么东西被搞砸了!
    不过,我想知道什么会使一个函数的位置变得如此重要?你说什么?我应该把未完成的版本发送出去然后忘记它吗?

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

    2 回复  |  直到 15 年前
        1
  •  2
  •   Alex Sexton    15 年前

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

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

        2
  •  0
  •   Darin Dimitrov    15 年前

    您是否尝试过显式设置 callbackParameter ?

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