Laravel 的 Ajax Post 请求中缺少参数
Posted
技术标签:
【中文标题】Laravel 的 Ajax Post 请求中缺少参数【英文标题】:Missing params in Ajax Post request in Laravel 【发布时间】:2019-04-04 21:32:04 【问题描述】:我正在尝试发出 Ajax 发布请求并传递参数以在查询中使用它们,但我的参数始终为空。这是我的代码:
$.ajaxSetup(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
);
function searchPatient()
var params =
'name' : $("#input-search-name").val(),
'lastname' : $("#input-search-lastname").val()
console.log($('meta[name="csrf-token"]').attr('content'));
$.ajax(
data : params,
url : ' route("searchPatient") ',
contentType: "application/json",
type : 'post',
beforeSend : function()
console.log(params);
,
success : function(data)
//Inserto a la tabla principal el contenido
$("#main-table-patients").html(data);
//alert('exito');
,
error : function(xhr, status, error)
var err = eval("(" + xhr.responseText + ")");
console.error(err.Message);
);
这是我的 web.php
Route::group(['middleware'=>'auth'], function()
Route::namespace('Patient')->group(function()
Route::resource('/patients','PatientController');
Route::post('/patients/search/name?/lastname?','PatientController@search')->name('searchPatient');
);
);
这是我在控制器中的方法
public function search($name = '', $lastname = '')
$patients = '';
$patients = Patient::where('name', 'like', '%'.$name.'%')
->Where('lastName','like','%'.$lastname.'%');
return $name.' and '.$lastname;
【问题讨论】:
【参考方案1】:这是一种预期的行为。您在 POST 中发送变量,但您的路由旨在从 url 检索变量。
决定你想要什么...
如果你想在 POST 中传递它们,那么你的 ajax 调用的 url 应该是 /patients/search
你的路线应该只有
Route::post('/patients/search','PatientController@search');
此时你的控制器可以处理 $request 对象
public function search(Illuminate\Http\Request $request)
dd($request->all());
如果您想在 url 中传递它们(恕我直言,这不是一个好主意) 然后将您的 ajax 调用 url 更改为:
url: '/patients/search/' + params.name + "/" + params.lastname
如果 2 个参数之一包含“斜杠”(/),这种方法可能会导致问题
【讨论】:
感谢它的工作,我决定使用第一种方式。我还必须在我的 AJAX 请求中删除:“内容类型:application/json”。以上是关于Laravel 的 Ajax Post 请求中缺少参数的主要内容,如果未能解决你的问题,请参考以下文章
Django CSRF 令牌错误或缺少 Ajax POST 请求
仅在 HTTPS 中执行 ajax POST 请求时,Laravel 403 错误(生产)
Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法