我正在尝试将我的id从ajax传递给我的控制器。我主要看到它是通过网址完成的,但是有没有其他方法可以在不使用网址的情况下完成此操作?
查看
</div>
<div class="form-group">
<label for="select" class="col-lg-2 control-label">Item</label>
<div class="col-lg-10">
<select class="form-control" id="item" name="item" mulitple>
<option >
</option>
</select>
</select>
</div>
</div>
$('#item').change(function()
{
id =$(this).val();
alert(id);
}
)
控制器
public function store(Request $request)
{
$id = $request->id;
$item = Item::all()->where('id',$id)->first();
}
答案 0 :(得分:0)
由于您使用的是jquery,因此可以使用jquery的ajax方法将变量或数据发送到laravel上的控制器。请务必在任何情况下阅读laravel文档中的表单方法欺骗,check it out here.
Jquery's ajax documentation goes here.
以下是它的样子:
function usersManagementAjax(requestType, url, userData, modalSelector, modalFailedSelector){
modalSelector.modal('hide');
$.ajax({
type: requestType,
url: url,
data: userData,
dataType: "json",
success: function(data){
modalSuccess.modal('show');
},
error: function(data){
if(data.responseJSON.errors.contactNumber){
contactGrp.removeClass('has-success');
contactGrp.addClass('has-error');
contactGrpError.removeClass('hidden');
contactError = true;
contactErrorText.text(data.responseJSON.errors.contactNumber[0]);
isValid();
}
if(data.responseJSON.errors.email){
emailGrp.removeClass('has-success');
emailGrp.addClass('has-error');
emailGrpError.removeClass('hidden');
emailError = true;
emailErrorText.text(data.responseJSON.errors.email[0]);
isValid();
}
modalFailedSelector.modal('show');
}
}); }
以下是控制器中的功能如何:
public function update(Request $request)
{
$userId = $request->id;
$updateRules = [
'name' => 'required|string|max:255',
'email' => [
'required',
'string',
'email',
'max:120',
Rule::unique('users')->ignore($userId)
],
'college' => 'required|string|min:1|max:1',
'contactNumber' => [
'required',
'string',
'min:11',
'max:11',
Rule::unique('users')->ignore($userId)
]
];
$validation = Validator::make(Input::all(), $updateRules);
if($validation->fails()){
return Response::json(
array('errors' => $validation->getMessageBag()->toArray()), 404);
}
else{
$user = User::find($userId);
$user->name = $request->name;
if(Auth::user()->role->role != "Admin"){
$user->roleID = Role::$defaultRoleId;
}
else{
$user->roleID = $request->role;
}
$user->collegeID = $request->college;
$user->contactNumber = $request->contactNumber;
$user->email = $request->email;
$user->save();
return response()->json($user);
}
}
请注意,这只是一个代码示例,我只是想让您了解如何解决此问题。这些是我当前项目的一些代码段。
编辑:我忘了提到,对于在laravel项目上工作的ajax请求,你必须为每个ajax请求包含一个X-CSRF-TOKEN。 (或者您可以简单地删除VerifyCsrfToken中间件)关于此问题的链接here。