【问题标题】:jQuery AJAX call to web service producing empty responsejQuery AJAX 调用 Web 服务产生空响应
【发布时间】:2010-12-26 20:54:25
【问题描述】:

我正在使用 jQuery 对远程服务器进行 AJAX 调用,但使用代码原样(并且表面上正确)我得到一个空响应。如果我将 dataType 更改为“脚本”,我会在响应中得到预期的 XML,但我无法对它做任何事情。这是我正在使用的一些伪代码:

函数发送数据(数据) { $.ajax( { 类型:“获取”, 网址:“远程服务器”, 数据类型:“xml”, 数据:“参数=”+数据, 完成:函数(xml) { console.info('XML 结果是',x​​ml); }, 内容类型:“文本/xml;字符集=utf-8” }); }

另外需要注意的一点是,我使用本地 .htm 文件来调用远程服务器。当我使用 Web 浏览器 (http://remote_server/page?parameter=value) 时,我得到一个有效的 XML 响应。最后,XML 响应标头的编码类型为 ASCII,尽管我也尝试将代码中的字符集值更改为 ASCII,结果相同。

感谢您提供的任何帮助。

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    您遇到的问题是same origin policy。除非您使用 JSONP,否则您无法向另一个域中的 URL 发出 AJAX 请求。 JSONP 通过加载一个带有您的 URL 作为 src 的脚本标记并让 Web 服务器响应一些包裹在 JSON 结果周围的代码来响应这个问题,该结果执行对您的 javascript 方法的回调。

    【讨论】:

      【解决方案2】:

      您可以使用 firebug 中的 NET 选项卡来查看正在进行的调用以及实际响应是什么。这可以提供很多帮助。

      【讨论】:

        【解决方案3】:

        您不能向远程域发出 AJAX 请求。您可以做的是创建一个脚本包含,但它要求响应作为 javascript 函数调用发送:

        callback('<xml/>');
        

        而不仅仅是

        <xml/>
        

        【讨论】:

          【解决方案4】:

          只是预感,但请检查通过 ajax 函数返回的数据的 mime 类型。如果您请求 xml,则脚本需要编码为 text/xml 或 some other derivative 的内容。

          您也可能遇到同源策略,在这种情况下,您需要将所有内容重构为 json 并利用 jsonp

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多