GET请求没有显示错误[重复]

Posted

技术标签:

【中文标题】GET请求没有显示错误[重复]【英文标题】:No error being displayed with GET request [duplicate] 【发布时间】:2020-02-02 00:43:32 【问题描述】:

我正在尝试显示此获取请求的结果,但它没有返回任何结果或错误。

即使在测试时,我也尝试过硬编码并附加 <li>my job</li>,但这也不起作用。

你有什么想法吗?

这是我的代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(function ()

  var $jobs = $('#jobs');

  $.ajax(
    type: 'GET',
    dataType: 'json',
    username: '5afe0f90-3480-4d47-8206-3529815a610a',
    password: '',
    crossDomain: true,
    url: 'http://www.reed.co.uk/api/1.0/search?keywords=construction&location=sheffield',
    success: function(jobs) 
      $.each(jobs, function(i, job)
        $jobs.append('<li>my job</li>')
      );
    
  );

);
</script>

<ul id="jobs"></ul>

【问题讨论】:

你检查错误回调了吗? @leafeve 错误回调是什么?抱歉,我是新手。 你只有一个成功回调;你需要添加一个错误回调。 添加错误回调并检查agian tutorialsteacher.com/jquery/jquery-ajax-method 您是否检查过浏览器开发工具的“网络”选项卡中的响应?响应是什么样的?它是有效的 JSON 吗? 【参考方案1】:

您需要在选项对象中进行错误回调:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(function ()

  var $jobs = $('#jobs');

  $.ajax(
    type: 'GET',
    dataType: 'json',
    username: '5afe0f90-3480-4d47-8206-3529815a610a',
    password: '',
    crossDomain: true,
    url: 'http://www.reed.co.uk/api/1.0/search?keywords=construction&location=sheffield',
    success: function(jobs) 
      $.each(jobs, function(i, job)
        $jobs.append('<li>my job</li>')
      );
    ,
    error: (err)=> alert(err)
  );

);
</script>

<ul id="jobs"></ul>

除了成功,还有四种返回状态:

超时 - 超过您指定的超时时间 错误 - http 错误,例如 404 notmodified - 自上次请求以来未修改请求的资源时 parsererror - 当 xml/json 响应错误时

因此,您可能需要逐一检查以确定处理每个响应的最佳方式。 :)

【讨论】:

【参考方案2】:

一切看起来都很好,除了成功回调。您有两种选择,请查看下方以了解哪些套件更适合您的需求。

选项 1: 使用 arrow function expression

$(function ()
    var $jobs = $('#jobs');

    $.ajax(
        type: 'GET',
        dataType: 'json',
        username: '5afe0f90-3480-4d47-8206-3529815a610a',
        password: '',
        crossDomain: true,
        url: 'http://www.reed.co.uk/api/1.0/search?keywords=construction&location=sheffield',
        success: (jobs) => 
            $.each(jobs, function(i, job)
                $jobs.append('<li>my job</li>')
            );
        
    );
);

选项 2:$jobs 的定义移动到回调中的相同上下文中或将其删除。

$(function ()
    $.ajax(
        type: 'GET',
        dataType: 'json',
        username: '5afe0f90-3480-4d47-8206-3529815a610a',
        password: '',
        crossDomain: true,
        url: 'http://www.reed.co.uk/api/1.0/search?keywords=construction&location=sheffield',
        success: function(jobs) 
            $.each(jobs, function(i, job)
                $('#jobs').append('<li>my job</li>')
            );
        
    );
);

解释: 这是由于定义变量的上下文不同造成的。对于function 定义,它将使用它自己的上下文,对于arrow function,它将使用当前上下文。

如果您仍有问题,请检查控制台以查看服务器响应代码 CORSMixed Content 等是否产生任何错误。

【讨论】:

嗨,Noah,我已经尝试了您的两种解决方案,但页面上没有显示任何内容。我将 dataType 更改为 JSONP 以解决 CORS 问题。你试过这个脚本吗?

以上是关于GET请求没有显示错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

emberJS JSONAPI 适配器发送 OPTION 而不是 GET 请求 [重复]

Python HTTP服务器在POST和GET请求时没有响应

烧瓶 request.get_json() 没有收到来自 $.post() 请求的任何内容[重复]

发出 GET 请求时没有 CORS 错误,但发出 POST 请求时出现 CORS 错误

无法从客户端向 Fastify 后端发出 PUT 请求 [重复]

PHP:在文件中记录错误但不将它们显示给 POST/GET 请求