我试图发出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;
}
答案 0 :(得分:0)
这是预期的行为。您正在POST中发送变量,但是您的路由旨在从url中检索变量。
决定你想要...
如果您想在POST中传递它们,那么您的Ajax调用网址应为/patients/search
而且您的路线应该只有
Route::post('/patients/search','PatientController@search');
您的控制器此时可以处理$ request对象
public function search(Illuminate\Http\Request $request) {
dd($request->all());
}
如果您想在url中传递它们(不是个好主意,恕我直言) 然后将您的Ajax调用网址更改为:
url: '/patients/search/' + params.name + "/" + params.lastname
如果两个参数之一包含一个“斜杠”(/),此方法可能会导致问题