【问题标题】:ajax get request results in an error, but fiddler gives a 200 responseajax 获取请求导致错误,但 fiddler 给出 200 响应
【发布时间】:2014-06-16 09:27:38
【问题描述】:

我们正在尝试使用 TypeScript 进行跨域 GET 请求。我们使用 XMLHttpRequest、$.get 和 $.ajax 进行了测试。

使用 XMLHttpRequest,onreadystatechange 永远不会被触发。当使用 $.ajax 方式时,我们注意到我们收到了一个错误(text was 'error' :( )。奇怪的是,fiddler 返回了 200 响应,并且在 textview 中查看,我们可以看到我们请求的所有文本.

服务器发送的响应是 HTML / 文本。 这是我们尝试过的代码:

public GetFeatureInfo(url: string): void {

            $.ajax({
                url: url,
                type: 'GET',
                cache: false,
                dataType: 'text',
                beforeSend: function (xhr) {
                    xhr.overrideMimeType("text/plain; charset=UTF-8");
                }
            }).done(function (data) {
                alert(data);
            }).fail(function (jqXHR, textStatus) {

                alert("Request failed: " + textStatus);
            }).always(function () {

            });
        }

有什么想法吗?

感谢您的帮助!

比约恩

【问题讨论】:

  • 肯定是跨域的吗?您在选项中设置了crossDomain: true,您必须在 jQuery 中执行此操作才能使跨域请求成功。 (或者你在使用 JSONP 吗?)
  • 是的,另一家公司编写了 API。我添加了 crossDomain: true,但它仍然无法正常工作。 Fiddler 收到结果,我的脚本没有。我们没有使用 JSONP,它们返回的是纯文本。

标签: jquery ajax xmlhttprequest typescript


【解决方案1】:

好的,找到了解决方案。问题是,我们在 localhost 上对其进行了测试。按照这个解释解决了这个问题:

https://stackoverflow.com/a/11454746/1387161 这个解决方案是使用 Chromium 浏览器,但是它(可以用 IE 解决这个问题:

https://stackoverflow.com/a/9794439/1387161

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多