【问题标题】:Using jQuery Ajax, 200 statusCode logged but code executes error function使用 jQuery Ajax,记录了 200 个状态代码,但代码执行错误函数
【发布时间】:2013-01-07 16:44:45
【问题描述】:

我正在使用 jQuery 1.8.3 Ajax 函数进行跨域请求。下面的代码总是返回“失败”,但控制台日志中的每个 Ajax 请求都会记录“200 OK”。鉴于日志显示状态为 200,不应该执行成功功能吗?返回状态为200时如何获取成功函数?

$().ready(function() {
    var checkIt = function(checkURL, resultP) {
    $.ajax({
      url: checkURL,
      type: 'GET',
      cache: false,
      success: function() {
        $(resultP).text("ok");
      },
      error: function() {
        $(resultP).text("fail");
      }
    });
  };
  checkIt("https://firstURL", "#p1p");
  checkIt("https://secondURL", "#p2p");
  checkIt("https://thirdURL", "#p3p");
)};

控制台日志显示如下(每个请求都有一个 200 响应)

[10:03:37.898] GET https://firstURL [HTTP/1.1 200 OK 141ms]
[10:03:37.898] GET https://secondURL [HTTP/1.1 200 OK 141ms]
[10:03:37.898] GET https://thirdURL [HTTP/1.1 200 OK 141ms]

谢谢!

【问题讨论】:

标签: jquery ajax


【解决方案1】:

您尝试从中获取数据的 URL 可能已命中,因此为 200,但您尝试访问的服务器的错误或问题不允许跨域请求,因此“失败”。

【讨论】:

    【解决方案2】:

    这不起作用,因为它是跨域调用。

    解决这个问题

    JavaScript

    创建一个函数

    function getMyData(data) {
        alert(data);
        //Do the magic with your data
    }
    

    服务器端

    在服务器端将数据包装在函数语法中

    getMyData("Enter your data here");
    

    JavaScript

    然后创建一个脚本标签并添加一个链接到你的跨域页面

     <script type="text/javascript"
             src="cross ref url">
     </script>
    

    对于reference: wikipedia

    编辑:另一个选择是 在您的域上创建代理。即在您的域中创建一个页面,该页面在内部调用跨域页面并将相同的数据返回给您的 Ajax 调用。

    【讨论】:

    • 谢谢。我想这样做,但就我所做的而言,更改服务器端不是一种选择。
    猜你喜欢
    • 2011-07-29
    • 2021-10-21
    • 1970-01-01
    • 2013-09-08
    • 2019-09-07
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多