【问题标题】:How to use HTTP request to retrieve data from Laravel API?如何使用 HTTP 请求从 Laravel API 中检索数据?
【发布时间】: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


【解决方案1】:

(代表问题作者发布).

其实解决方法很简单,只要在url后面加上http://即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多