基本上,我在这里尝试实现的目标非常复杂。
我希望能够在我的网站中使用一个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
$('.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;
任何帮助都将一如既往,非常感谢!
干杯
马特
答案 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);
}
});
}