Laravel Ajax 调用 url 到控制器

Posted

技术标签:

【中文标题】Laravel Ajax 调用 url 到控制器【英文标题】:Laravel Ajax call url to controller 【发布时间】:2017-06-06 20:02:27 【问题描述】:

我是 laravel 的新手。我想使用 ajax 调用使用 laravel 创建一个 api。但我请求 ajax 调用,url 显示无效的服务器路径。 这是我的代码 我的路线文件:

Route::get("a/b","AController@c");

我的 js 文件:

var base = "public/index.php";
var url = base + "a/b";
$.ajax(
  url : url,
  dataType: "json",
  timeout: 10000,
  error:function()  alert("Error getting from server") 
).done(function(resp)

);

假设我在以下网址中:

domain.com/dev/lar/public/index.php/c/d

然后我调用这个 ajax ,然后 url 将重定向到

domain.com/dev/lar/public/index.php/c/public/index.php/a/b

这里 lar 是我的 laravel 应用文件夹

** Note I am using nginx server. My Server Admin do not rewrite this url. That's why I use public/index.php **

【问题讨论】:

试试这个代码 Route::get("/a/b","AController@c");而不是 Route::get("a/b","AController@c"); 这条路线不起作用,因为我的应用程序文件夹是域之后的许多子文件夹。 ex- domain.com/dev/laravel 应用文件夹 为什么你使用 domain.com/dev/lar/public/index.php/c/d 而不是 domain.com/dev/lar/public/c/d。你让 index.php 成为目录而不是文件??? domain.com/dev/lar/public/c/d 给出 404 错误。给 domain.com/dev/lar/public/index.php/c/d 后,路由正常 【参考方案1】:

控制器声明中缺少您。你必须首先使用反斜杠。例如

Route::get("/a/b","AController@c");

并且在你的 ajax 代码中的 url 应该是

var base = "domain.com/dev/lar/public/index.php";
var url = base + "/a/b";

【讨论】:

我认为问题出在您的 ajax 基本网址中。我已经更新了代码。试试这个 你是对的。我知道这种方法。但我不想在我的代码中修复我的服务器基本路径。在代码中修复基本 url 路径是一种不好的做法。如果我更改我的域,那么我想修改我的代码

以上是关于Laravel Ajax 调用 url 到控制器的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 如何通过 AJAX (jQuery) 调用控制器函数

如何将数据从ajax get方法发送到laravel中的控制器?

如何在 ajax 调用时从 laravel 控制器函数返回视图?

Laravel 5:在路由中获取 ajax 数据并传递给控制器

通过 Ajax 调用将数组发送到控制器,然后控制器在 Laravel 中返​​回具有该数组的另一个视图

在 Ajax 调用中传递完整 URL 作为参数 - Laravel 5.1 路由