【问题标题】:Pass Id from ajax to controller - Laravel将 ID 从 ajax 传递给控制器​​ - Laravel
【发布时间】:2017-10-24 22:36:02
【问题描述】:

我正在尝试将我的 id 从 ajax 传递给我的控制器。我主要看到它是通过 url 完成的,但有没有其他方法可以在不使用 URL 的情况下做到这一点?

查看

          </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();

}

【问题讨论】:

  • 您在标记中输入的 ID 为 Item 并且您的脚本以 id=food 为目标。此外,您的标签针对的是不存在的“选择”。而且您有一个嵌套在另一个选择中的选择(不起作用)
  • @happymacarts 抱歉,我刚刚将其编辑为我目前拥有的内容
  • 我在这段代码中没有看到 ajax 请求。您是否打算将其包含在“更改”功能中?
  • 是的..因为我正在动态获取项目的 ID。我可以分别输出 id,但现在的问题是 passing it to the controller
  • @happymacarts 好吧,我只包含了脚本的一小部分。这就是我获取所选项目的 id 的地方

标签: php ajax laravel


【解决方案1】:

由于您使用的是 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);
    }
}

请注意,这只是一个代码示例,我只是想让您了解如何解决这个问题。这些是我当前项目中的一些代码 sn-ps。 p>

编辑:我忘了提到要在 laravel 项目上工作的 ajax 请求,您必须为每个 ajax 请求包含一个 X-CSRF-TOKEN。 (或者你可以简单地删除 VerifyCsrfToken 中间件)关于这个的链接去here

【讨论】:

  • 您也可以将&lt;meta name="csrf-token" content="{{ csrf_token() }}"&gt; 添加到您的layout.blade.php 文件中 有时根据您的设置,您可能需要使用$(document).ready(function() { $.ajaxSetup({ headers : { 'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content') } }); })
  • 是的。我目前正在使用happymacarts提到的这种方法。忘记在我的回复中包含它。谢谢!
  • 我真的不知道你的回答如何解决我的问题
  • 你到底指的是哪个id? html 选择的 id?
  • 是的 html 选择 id。我想将选择的任何项目的 id 传递给我的控制器
猜你喜欢
  • 1970-01-01
  • 2018-05-31
  • 2020-08-09
  • 1970-01-01
  • 2015-08-13
  • 2014-12-08
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多