我按照JavaScript
部分进行构建,并且一切正常。但是我不确定代码是否完全正确。因为在我的脚本中我仅使用success: function()
,但没有使用error。在jQuery AJAX调用中必须出错吗?
目前,我正在php控制器函数中捕获错误,并在成功部分中回显它们。
$(document)
.ready(function() {
var groupName = '';
var groupid = '';
$(".grp")
.click(function() {
$('.text-danger')
.html('');
groupName = $(this)
.data('groupname');
groupid = $(this)
.attr('id');
$('.text')
.html(groupName);
$('#dataModal')
.modal({
show: true
});
});
jQuery(".grpval")
.click(function(e) {
e.preventDefault();
jQuery.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]')
.attr('content')
}
, });
jQuery.ajax({
url: "{{ route('request_group') }}"
, method: 'post'
, data: {
'Gruppe': groupid
}
, success: function(data) {
if (typeof data.successsuccess != 'undefined') {
jQuery('.alert-success')
.show();
jQuery('.alert-success')
.html('<p>' + data.successsuccess + '</p>');
$('#dataModal')
.modal('toggle');
window.scrollTo(500, 0);
} else if (typeof data.successdberror != 'undefined') {
jQuery('.alert-danger')
.show();
jQuery('.alert-danger')
.html('<p>' + data.successdberror + '</p>');
$('#dataModal')
.modal('toggle');
window.scrollTo(500, 0);
} else {
jQuery.each(data.errors, function(key, value) {
jQuery('.alert-danger')
.show();
jQuery('.alert-danger')
.html('<p>' + value + '</p>');
$('#dataModal')
.modal('toggle');
window.scrollTo(500, 0);
});
}
}
});
});
});
编辑:这是我的控制器中的功能:
public function setGroupRequest(Request $request){
$validator = \Validator::make($request->all(), [
'Gruppe' => [new ValidRequest]
]);
$groupid = $request->input('Gruppe');
if ($validator->fails())
{
return response()->json(['errors'=>$validator->errors()->all()]);
}
try{
$groups_request = new GroupRequest();
$groups_request->idgroups = $groupid;
$groups_request->iduser = Auth::id();
$groups_request->request_active = 1;
$groups_request->save();
$db_status = 'success';
}catch(\Exception $e){
$db_status = 'error';
}
if($db_status == 'success'){
return response()->json(['successsuccess'=>'Record is successfully added']);
}else{
return response()->json(['successdberror'=>'DB Error! Values could not be saved.']);
}
}
答案 0 :(得分:0)
需要进行错误处理,因为您永远不知道互联网上的其他事物可能会导致请求失败,例如
在---------------------------------------------------------------------------
com_error Traceback (most recent call last)
<ipython-input-16-6924c75f990d> in <module>()
7
8
----> 9 pt = pc.CreatePivotTable(TableDestination='Pivot
Sheet!R4C1',TableName='PivotTable1')
10
11
C:\Users\BARTRA~1\AppData\Local\Temp\gen_py\3.6\00020813-0000-0000-C000- 000000000046x0x1x8\PivotCache.py in CreatePivotTable(self, TableDestination, TableName, ReadData, DefaultVersion)
43 def CreatePivotTable(self, TableDestination=defaultNamedNotOptArg, TableName=defaultNamedOptArg, ReadData=defaultNamedOptArg, DefaultVersion=defaultNamedOptArg):
44 ret = self._oleobj_.InvokeTypes(1836, LCID, 1, (9, 0), ((12, 1), (12, 17), (12, 17), (12, 17)),TableDestination
---> 45 , TableName, ReadData, DefaultVersion)
46 if ret is not None:
47 ret = Dispatch(ret, 'CreatePivotTable', '{00020872-0000-0000-C000-000000000046}')
com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024809), None)
中编写PHP
错误的方式没有任何问题,但最好在回调函数success
$ajax
中编写,因为它有助于分隔{{ 1}}。
实际上,您也可以在error
上添加一个jQuery error & success logic
回调函数,该函数将处理所有上述互联网故障引起的错误。
您可以添加error
函数,该函数将接收来自后端的任何类型的错误。
$ajax
在您的PHP文件中,
error
通过这种方式,您可以在jquery ajax中捕获PHP错误以及任何Internet网络错误。