【发布时间】:2018-07-11 05:10:25
【问题描述】:
Laravel 认为 jQuery 正在发送一个 GET 请求,即使它不是。
我已通过request()->method() 函数确认了这一点。
控制器功能:
public function fields($vertical_id = null, $lead_id = null)
{
echo request()->method();
}
jQuery:
$(document).on('change', '#vertical_id', function () {
$.post('http://myapp.local/leads/fields/1/2', $(this).closest('form').serialize(), function (data) {
console.log(data);
});
});
路线:
Route::any('leads/fields/{vertical_id?}/{lead_id?}', 'LeadController@fields')->name('leads.fields');
请注意,我必须使用 any,因为当我尝试使用 post 时,它会抛出一个方法不允许的异常。每次我提出此请求时,我的控制台都会显示 GET。
如何让 Laravel 意识到 jQuery 发送的是 POST 而不是 GET?
【问题讨论】:
-
您确定它没有发送
OPTIONS请求吗?查看浏览器的 Network 控制台 -
您是否有其他使用 get 方法声明的具有相同签名的路由?
-
这很有趣。当我从 URL 中删除参数时,它现在认为它是一个 POST。我猜想在路由中使用条件参数会导致 Laravel 自动将请求更改为 GET。
-
另外,我建议在客户端脚本中使用路径,而不是完全限定的 URL。它将避免潜在的跨域问题,并使您的应用程序可移植。例如
$.post('/leads/... -
会不会和其他路由冲突?
标签: php jquery laravel request