【问题标题】:How to Get record from controller to Ajax laravel 5.2如何从控制器获取记录到 Ajax laravel 5.2
【发布时间】:2016-06-19 07:46:17
【问题描述】:

当我记录要更新的数据库表中的记录时,我想要问候和尊重,但不幸的是,我没有做任何无法获取 ID 并注入 AJAX 和 AJAX 的事情,我想要控制器和我的金额之间的关系从数据库和表中读取。

我的控制器:

    public function index()
{
    $category = Category::all();
    return view('admin.category', compact('category'));
}
public function indexAjax(messageRequest $request){
    $id=$request->id;
    $category=Category::where('id',$id)->first();
    $data=array('data'=>$category);
    return $data;
}
public function create(messageRequest $request)
{
    try {
        Category::create($request->all());
        return response()->json(array('sms'=>'save'));
    }catch (Exception $e){
        return response()->json(array('err'=>'error'));
    }
}

我的路线:

Route::group(['middleware' => 'web'], function () {
Route::auth();
Route::get('category',['uses'=>'categoryController@index']);
});
Route::group(['middleware' => 'web'], function () {
Route::auth();
Route::get('categoryAjax',    ['as'=>'categoryAjax','uses'=>'categoryController@indexAjax']);
});

脚本:

            <script>
            $('#submit').on('click', function (e) {
                e.preventDefault();
                var data = $('#create').serialize();
                $.ajax({
                    type: 'post',
                    url: '{!! URL::route('category') !!}',
                    data: data,
                    success: function (data) {
                        alert(data.sms);
                    },
                    error: function () {
                        alert(data.err);
                    }
                });
                $.ajax({
                    type: 'GET',
                    url: '{!! URL::route('categoryAjax') !!}',
                    async: false,
                    dataType: 'json',
                    data: data,
                    success: function (data) {
                        alert(data.data);
                    }
                });
            });
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
        </script>

我将 alert(data.data) 更改为 alert('hi) 但没有运行 :( 改变:

                    $.ajax({
                    type: 'GET',
                    url: '{!! URL::route('categoryAjax') !!}',
                    async: false,
                    dataType: 'json',
                    data: data,
                    success: function (data) {
                        alert('hi');
                    }
                });

我的 Ajax 方法 POST:

                    $.ajax({
                    type: 'post',
                    url: '{!! URL::route('category') !!}',
                    data: data,
                    success: function (data) {
                        alert(data.sms);
                    },
                    error: function () {
                        alert(data.err);
                    }
                });

我的控制器 POST 方法:

    public function create(messageRequest $request)
{
    try {
        Category::create($request->all());
        return response()->json(array('sms'=>'save'));
    }catch (Exception $e){
        return response()->json(array('err'=>'error'));
    }
}

我的路由 POST 方法:

Route::group(['middleware' => 'web'], function () {
Route::auth();
Route::post('category', ['as' => 'category',  'uses' => 'categoryController@create']);
});

【问题讨论】:

  • 您定义了 Route::get('category',['uses'=>'categoryController@index']) 以及为什么要使用 ajax type: 'post' ?这根本没有意义。
  • 添加了向控制器发送数据和接收连接的 Post 方法。尝试

标签: php jquery mysql ajax laravel


【解决方案1】:

在 Laravel 5.2 中,中间件有 web、api 和 auth。 如果你想使用 ajax 发送数据,你将使用带有令牌的 api 中间件。 你可以看到这个参考:

首先,给用户添加一个 api_token:

您需要做的第一个想法是在您的用户表中添加一个 api_token 列。如果你刚刚开始你的应用程序,你可以修改 Laravel 附带的用户迁移以包含你的新列。

// add this to your users_table migration
$table->string('api_token', 60)->unique();

控制器:

public function upload()
{
    return view('uploads.upload', ['api_token' => Auth::user()->api_token]);
}

查看:

<script>
    $(function () {
        'use strict';

        var url = '/api/photos?api_token={{ $api_token }}';

        // Initialize the jQuery File Upload widget:
        $('#fileupload').fileupload({
            // Uncomment the following to send cross-domain cookies:
            // xhrFields: {withCredentials: true},
            url: url
        });      
</script>

路线:

Route::group(['middleware' => ['auth:api']], function () {
    Route::post('api/photos', 'FileController@storeApi');
});

【讨论】:

  • 谢谢你的好意不麻烦剩下的代码?
  • 我不确定。但是你可以修改路线并尝试一下。 O______O
  • 我改变了路线,但还是失败了。
  • 你能检查 indexAjax 有没有工作?尝试在函数中回显某些内容?
  • 这不是我的问题 :(
【解决方案2】:

通过此代码解决了我的问题。但是从我的脚本中删除 $.get 并使用 POST 方法运行。

    public function create(messageRequest $request)
{
    try {
        $category = Category::create($request->all())->id;
        return response()->json(['id'=>$category]);
    }catch (Exception $e){
        return response()->json(array('err'=>'error'));
    }
}

通过此代码在警报中返回记录 ID。

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 2019-01-25
    • 2016-07-09
    • 2016-07-24
    • 1970-01-01
    • 2019-08-13
    • 2019-06-28
    • 1970-01-01
    • 2016-07-17
    相关资源
    最近更新 更多