jquery Ajax 错误函数未触发

本文关键字:函数 Ajax 错误 jquery | 更新日期: 2023-09-27 18:31:40

下面是我的函数(第一个代码片段),当我运行下面的函数时,它通过我的处理程序进入我的代码,在我的代码中它抛出异常(第二个代码段),异常被捕获后,它回到我的处理程序并进入捕获区域,最后回到 JavaScript 成功函数,但错误它没有运行错误部分。

    BenefitOperations.performBenefitOperation = function(data) {
      $.ajax({
        type: "POST",
        url: "BenefitOperation.axd",
        data: JSON.stringify(data.BenefitOperationJson),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        beforeSend: function() { PageMask.show(); },
        success: function(response) {
          if (response.Success == true)
            performPostBack();
          else
            window.alert(Res.BenefitOperationFailure);
    },
    error: function(e, x, y) { window.alert(Res.BenefitOperationError + y); }   }); }

这是我的职能

    else
    {
        throw new ApplicationException(string.Format("Benefit operation type {0} for benefit type {1} is not registered", Enum.GetName(typeof(EmployeeBenefitData.BenefitOperationType), parameters.OperationTypeID), Enum.GetName(typeof(EmployeeBenefitData.BenefitTypeEnum), parameters.BenefitTypeID)));
    }

这是我的处理者的捕获

    catch
    {
        jsonOutput = JsonConvert.SerializeObject(new
        {
            Success = false
        });
    }
    finally
    {
        context.Response.Clear();
        context.Response.ContentEncoding = Encoding.UTF8;
        context.Response.ContentType = "application/json";
        context.Response.Write(jsonOutput);
    }

jquery Ajax 错误函数未触发

$.ajax()error回调不会在代码中调用,因为没有错误。 error表示检索响应时出现问题,例如。来自服务器的 500 错误。

在代码中,您自己捕获ApplicationException并返回 JSON。如果希望使用 error 处理程序,请引发异常,不要在 C# 代码中捕获它 - 但应注意,当前代码是更好的方法。

Rory 是对的,只需在遇到错误/异常或操作失败时设置HTTP 500状态代码。

您可以设置 HTTP 500 状态代码,例如...

context.Response.StatusCode = 200;