GET请求未显示任何错误

时间:2019-10-03 16:39:01

标签: javascript ajax api

我正在尝试显示此get请求的结果,但未返回任何结果或错误。

即使在测试时,我也尝试过硬编码并附加<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>

2 个答案:

答案 0 :(得分:0)

除成功回调外,其他一切看起来都不错。您有两种选择,下面请看一下以了解您的需求更好的套件。

选项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等是否产生任何错误。

答案 1 :(得分:0)

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

<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
  • 未修改-自上次请求以来未修改请求的资源
  • parsererror -当xml / json响应不正确时

因此,您可能需要检查所有这些内容,以确定处理每个响应的最佳方法。 :)