Jquery Ajax POST请求的错误函数执行不一致

Inconsistent execution of Error function for Jquery Ajax POST request

提问人:Sam Klitsner 提问时间:11/18/2021 最后编辑:BarmarSam Klitsner 更新时间:11/18/2021 访问量:81

问:

我在处理 Jquery Ajax 请求的错误时遇到了一个问题,并且无法找到它的根源。

我有一个暂存站点,我正在测试表单提交的错误响应。当我第一次完整填写表单并单击“提交”时,表单将替换为简短的“正在处理”消息,然后输入字段会重新出现,并显示令牌无效的预期错误消息。

但是,当我单击后续次数时,即使我可以看到错误响应,有时它也会卡在显示“正在处理”消息上。这很奇怪,因为我的函数中被触发了,但是应该处理 Form 状态的 Jquery 调用似乎并不完整,即使它们在同一范围内。console.error()Error:

以下是处理表单状态的jquery变量:

  const $formErrorState = $('#SIM-Order-Error-State');
  const $formErrorStateText = $('#SIM-Order-Error-State-Text');
  const $formCompleteState = $('#SIM-order-complete-state');
 const $formSuccessState = $('#SIM-order-success-state');
  const $formInitialState = $('#SIM-order-form');

和调用本身:

function simOrderRequest(token, fData){
console.log(fData);
console.log(JSON.stringify(fData));
$.ajax({
    method: 'POST',
    url: 'https://control.dev.yomobile.xyz/api/v1.0/sim-request/confirm/?token='+token,
    data: JSON.stringify(fData),
    contentType: "application/json; charset=utf-8",
        dataType: "json",
    success: function (data) {
      if (data.type=="bad_request" || data.status==400) {
        $formErrorState.show();
        $formSuccessState.hide();
        $formErrorStateText.text(data.responseJSON.type+": "+data.responseJSON.description);
        $formInitialState.show();
      }
      if (data.status==500){
        $formErrorState.show();
        $formSuccessState.hide();
        $formErrorStateText.text(data.responseJSON.type+": "+data.responseJSON.description);
        $formInitialState.show();
      }else {
        $formCompleteState.show();
        $formSuccessState.hide();
      }
    },
    error: function (error) {
    $formSuccessState.hide();
    $formErrorState.show();
    $formInitialState.show();
    $formErrorStateText.text(error.responseJSON.type+": "+error.responseJSON.description);
            console.error(error);
    },
  });
}
});

这是预期的行为This is the expected behavior

但有时它会卡在这里,一旦返回错误,并且不会返回到输入字段

But sometimes it gets stuck here, once the error is returned, and does not return to the input fields

JavaScript jQuery AJAX 错误处理 WebFlow

评论


答: 暂无答案