【发布时间】:2019-08-12 22:47:13
【问题描述】:
我目前正在学习 Laravel API,并且已经开发了一个非常简单的 API,只需在浏览器中输入 127.0.0.1:8000/api/XXX 即可从数据库中检索数据,但是,当我尝试使用 ajax 调用时要从完全相同的 url 获取数据,ajax 总是显示 HTTP 请求失败,我使用的 ajax 代码如下:
$.ajax({
url: "127.0.0.1:8000/api/XXX",
success: function(data) {
let response = JSON.parse(data);
displayResult(response, 1);
}
})
.done(function() {
alert( "success" );
})
.fail(function() {
alert( "error" );
})
并且这段代码总是导致alert("error");,因此我想知道可能需要编写一些路由才能让API正确处理HTTP请求?我已经在 routes\api.php 中定义了一个路由:
Route::apiResource('XXX', 'XXXController');
PS:在浏览器中输入 API URL 时,运行正常,使用 API URL 进行 ajax 调用时出错。
编辑
这些是我使用function(jqXHR, textStatus, errorThrown) 捕获错误后从浏览器控制台得到的错误
DOMException: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL
at Object.send (https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js:2:79420)
at Function.ajax (https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js:2:77118)
at retrieveAllBooks (http://127.0.0.1:8000/js/api-query.js:25:5)
at HTMLInputElement.<anonymous> (http://127.0.0.1:8000/js/api-query.js:10:7)
at HTMLInputElement.dispatch (https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js:2:41772)
at HTMLInputElement.y.handle (https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js:2:39791)
我不确定为什么它是一个无效的 URL,因为如果我将此链接复制并粘贴到浏览器,没有任何问题...
【问题讨论】:
-
你能检查一下你的日志,看看有没有什么吗?
-
我的意思是 laravel 的错误日志。您的 javascript 运行
fail()部分意味着服务器返回200以外的状态代码。检查该日志并查看来自 ajax 请求的哪些错误将帮助您解决问题。如果您仍然无法解决,请在此处发布日志,以便我们为您提供帮助。 -
Laravel 日志?什么都没有,让我运行更多的 ajax 调用,看看是否记录了任何错误
-
尝试添加
http://... -
好吧.......添加
http://实际上解决了问题......谢谢
标签: php ajax laravel api xmlhttprequest