将Laravel变量输出到Ajax Callback以激活另一个Ajax函数

时间:2016-11-15 20:03:43

标签: jquery ajax laravel laravel-5

基本上,我在这里尝试实现的目标非常复杂。

我希望能够在我的网站中使用一个Ajax功能来控制信息的更新。基本上是一个通用更新脚本,它将在表单提交时激活。

但是,我遇到的问题是,我还希望特定的表单也能在ajax成功回调上执行另一个功能。

因此,例如,我点击个人信息的更新,然后更新数据库和成功回调,它还会调用我在Laravel响应中设置的另一个函数回到Ajax

成功回调中的功能将使用新数据更新个人信息部分。

所以,以外行人的话说。我将在jQuery / Ajax中设置一个函数来更新某些信息,但让Laravel将该函数名称推送到Ajax Success。从而使更新脚本具有通用性。

请参阅下面的当前代码:

Laravel

return ['success' => true, 'function_name' => 'updtPersonal', 'msg' => '<i class="fa fa-check fa-fw"></i> You successfully updated your personal statement', 'data' => $request];

的Ajax

&#13;
&#13;
$('.ajaxUpdt').on('submit',function(e){
	var action = $(this).attr('action');
	var method = $(this).attr('method');
	$.ajaxSetup({
		header:$('meta[name="_token"]').attr('content')
	})
	e.preventDefault(e);
	$.ajax({
		type: method,
		url: action,
		data:$(this).serialize(),
		dataType: 'json',
		success: function(data){
			success(data.msg);
			var func_name = (data.function_name);
			/* I NEED TO MAKE THE func_name VARIABLE BE A FUNCTION */
		},
		error: function(msg){
			fail("Fail");
		}
	});
});
&#13;
&#13;
&#13;

任何帮助都将一如既往,非常感谢!

干杯

马特

2 个答案:

答案 0 :(得分:1)

试试这个:

return response()->json(
    [
        'success' => true, 
        'function_name' => 'updtPersonal', 
        'msg' => '<i class="fa fa-check fa-fw"></i> You successfully updated your personal statement', 
        'data' => $request
    ], 200
);

<强>的Ajax

  success: function(data){
       if(data.success == true) {
          //do something or call your function 
          console.log(data.msg);
       }
   },

答案 1 :(得分:0)

我已经成功解决了这个问题。如果可能的话,如果有人能提出更好的方法,我会很感激,但请:

<强> Laravel

Route::get('/edit/get_personal_statement', function(Request $request) { 
    $user = Auth::user();
    $cv = DB::table('cvs')->where('cv_id', '=', $user->primarycv)->value('personal_statement');
    return ['success' => true, 'function' => 'psupdt', 'msg' => 'Route Found', 'result' => $cv, 'data' => $request];
});

<强>的Ajax

    $('.ajaxUpdt').on('submit',function(e){
        var action = $(this).attr('action');
        var method = $(this).attr('method');
        $.ajaxSetup({
            header:$('meta[name="_token"]').attr('content')
        })
        e.preventDefault(e);
        $.ajax({
            type: method,
            url: action,
            data:$(this).serialize(),
            dataType: 'json',
            success: function(data){
                var func_name = data.function;
                window[func_name](data.function);
                success(data.msg);
            },
            error: function(msg){
                fail("Fail");
            }
        });
    });

function psupdt(data) {
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
        }
    });
    $.ajax({
        type: "GET",
        url: "edit/get_personal_statement",
        data: data,
        dataType: 'json',
        success: function(data){
            $(".personal_statement_content").html(data.result);
        }
    });
}