从Ajax获取参数到Laravel控制器

3

我希望将id的值传递给Laravel控制器

我的Ajax代码:

$(document).ready(function () {


            $(document).on('click', '.brnch_clk', function () {
                //alert('ok')
                var branchid = $(this).data('branch');
                $('#txt_branchid').val(branchid);
                alert($(this).data('branch'));

                $.ajax({
                    'url': 'search',
                    'type': 'GET',
                    'data': {id: branchid},

                    success: function(response){ // What to do if we succeed
                        if(data == "success")
                            alert(response);
                    },
                    error: function(response){
                        alert('Error'+response);
                    }



                });
            });

        });

我的控制器:

public function search(Request $request)
{
    $member = $request->get('id');
    return json_encode($member);
}

我的路线:

Route::get('search', 'ShowstaffController@search');

我的链接:

<a href="{{URL('search')}}" class="brnch_clk"
    data-branch="{{$value->branch_id}}"> {{$value->Branch_Name}}
</a>

如何从ajax中获取id参数到控制器?

我猜 $member = $request->get('id'); 不起作用。 - Mihai Alexandru-Ionut
@Alexandru-IonutMihai 是的,我得到了一个空结果,我该如何得到真实的结果? - The Rock
尝试这个:$request->query('id'); - Mihai Alexandru-Ionut
@Alexandru-IonutMihai 结果仍为空白。 - The Rock
请尝试使用: $id = $_GET['id']; - Mihai Alexandru-Ionut
@Alexandru-IonutMihai:错误未定义索引:id。 - The Rock
4个回答

2

data 中不能发送 GET 值,应该将其作为查询字符串在 URL 中发送。 请检查以下代码:

$(document).ready(function () {


        $(document).on('click', '.brnch_clk', function (e) {
            e.preventDefault();

            //alert('ok')
            var branchid = $(this).data('branch');
            $('#txt_branchid').val(branchid);
            //alert($(this).data('branch'));

            $.ajax({
                'url': 'search?id='+branchid,
                'type': 'GET',
                'data': {},

                success: function(response){ // What to do if we succeed
                    if(data == "success")
                        alert(response);
                },
                error: function(response){
                    alert('Error'+response);
                }



            });
        });

    });

仍然得到空结果 - The Rock
结果仍为空白。 - The Rock
当我像你那样改变URL时,我应该更新我的路由和带有参数ID的链接吗? - The Rock
请执行nop操作,打开浏览器的“网络”选项卡,并检查“请求”数据。当您单击“.brnch_clk”时,能否看到“id”? - Hasan Shahriar

1
我认为应该使用'url': 'search?id='+branchid代替'url': 'search',这样可以强制JQuery将data作为GET参数发送。否则,数据将作为POST参数发送。

仍然无法获得结果,因为输出仍为空白。 - The Rock
通过路由传递参数。Route::get('search/{id}', 'ShowstaffController@search');public function search($id) - kharhys

0
你应该使用 query 方法从 query string 中获取参数。
$request->query('id');

仍然获得空结果 - The Rock

0

我也遇到了同样的问题,试过所有的解决方案,但是都没能得到结果。

这是我的做法:

  • 创建一个 formData 对象
  • param id 添加进去
  • form object 传递到ajax的 data attribute
  • 使用 $request->get('id')Laravel控制器 中检索值;

这是jQuery代码片段:

 var branchid = $(this).data('branch');
 var form = new formData();
 form.append('id',branchid)
                $.ajax({
                    'url': 'search',
                    'type': 'GET',
                    'data': form,

                    success: function(response){ // What to do if we succeed
                        if(data == "success")
                            alert(response);
                    },
                    error: function(response){
                        alert('Error'+response);
                    }
                });

Laravel 控制器

public function search(Request $request)
{
 $id = $request->get('id');
}

注意:您不需要对JSON进行编码,Laravel默认以JSON格式发送响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接