将Id从ajax传递给控制器​​ - Laravel

时间:2017-10-24 22:36:03

标签: php ajax laravel

我正在尝试将我的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();

}

1 个答案:

答案 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