jQuery中的错误部分丢失了

时间:2018-08-07 13:21:25

标签: javascript jquery ajax

我按照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.']);
    }
}  

enter image description here

1 个答案:

答案 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网络错误。