【问题标题】:Receive data from an $.ajax call with laravel controller使用 laravel 控制器从 $.ajax 调用接收数据
【发布时间】:2014-05-16 00:49:26
【问题描述】:

我正在尝试从<select> 中获取选定的选项,将其传递给控制器​​中的方法show(),使用它从数据库中检索数据,然后将其作为json 返回到$.ajax 中的成功方法。这一切都是通过jquery.ajax 发生的。

我的问题

如何获取/接收我从$.ajax 请求传递的数据来操作数据库?

这是我正在使用的代码:

routes.php

Route::post('rate/units',array('as'=>'unitRoute','uses'=>'RateController@show'));

RateController.php

public function show()
{
    $row[] = $_POST['deg'];

    return json_encode($row);
}

观看次数

<select class="form-control choosedegree" name="sem" id="semester">
    <option value="" selected="selected" disabled>Select Semester</option>
    <option value="1">Year 1, Semester 1</option>
    <option value="2">Year 1, Semester 2</option>
    <option value="3">Year 2, Semester 1</option>
    <option value="4">Year 2, Semester 2</option>
    <option value="5">Year 3, Semester 1</option>
    <option value="6">Year 3, Semester 2</option>
    <option value="7">Year 4, Semester 1</option>
    <option value="8">Year 4, Semester 2</option>
</select>

<script>
$(document).ready(function() {
    $('select#semester').on('change', function() {
        var optionSelected = $(this).find("option:selected");
        semesterSelected  = optionSelected.val();
        console.log(semesterSelected);

        $.ajax({
            type: "POST",
            cache: false,
            url : "rate/units",
            data: { sem : semesterSelected },
            success: function(data) {
                var obj = $.parseJSON(data);
                var i = 0;
                console.log(data.iyo);

                $.each(obj, function() {
                    console.log(this[0]);
                    console.log(this[1]);
                    console.log(this[2]);
                    console.log(this[3]);
                    console.log(this[4]);

                    i++;
                });
            }
        })
        .done(function(data) {
            alert('done');
        })
        .fail(function(jqXHR, ajaxOptions, thrownError) {
            alert('No response from server');
        });
    });
});
</script>

【问题讨论】:

  • 使用return Response::json($row)); 而不是json_encode。我还没有确认,但我怀疑它会设置正确的标题。

标签: php jquery ajax laravel-4


【解决方案1】:

我使用的是 Laravel 5.4.36 版本,我使用此方法从 ajax 请求中检索数据。

控制器:

public function processData(Request $request){

   $data = $request->all();
   print_r($data);
   echo $data['email'];

}

查看:

function someMethod(prm){

    $.get("{!! route('routename') !!}",{email:prm},function(res){
        console.log('Response:',res);
    });

}

【讨论】:

    【解决方案2】:

    您发布的数据可以使用输入检索:

    public function show()
    {
        $semester = Input::get('sem');
    
        return json_encode($semester);
    }
    

    要调试它,您可以:

    public function show()
    {
        Log::info(Input::all());
    
        $semester = Input::get('sem');
    
        return json_encode($semester);
    }
    

    然后在控制台执行

    php artisan tail
    

    【讨论】:

    • 输入在laravel 5.1中不可用。
    • 如何在视图侧打印数据?
    猜你喜欢
    • 2016-10-17
    • 2016-04-15
    • 2021-11-23
    • 2018-12-16
    • 2018-04-19
    • 1970-01-01
    • 2014-08-14
    • 2021-06-16
    • 1970-01-01
    相关资源
    最近更新 更多