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
,它将使用当前上下文。
如果您仍有问题,请检查控制台以查看服务器响应代码 CORS
、Mixed Content
等是否产生任何错误。
【讨论】:
嗨,Noah,我已经尝试了您的两种解决方案,但页面上没有显示任何内容。我将 dataType 更改为 JSONP 以解决 CORS 问题。你试过这个脚本吗?以上是关于GET请求没有显示错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
emberJS JSONAPI 适配器发送 OPTION 而不是 GET 请求 [重复]
Python HTTP服务器在POST和GET请求时没有响应
烧瓶 request.get_json() 没有收到来自 $.post() 请求的任何内容[重复]
发出 GET 请求时没有 CORS 错误,但发出 POST 请求时出现 CORS 错误