【问题标题】:Ajax don't receives onError MessageAjax 没有收到 onError 消息
【发布时间】:2026-01-21 23:35:02
【问题描述】:

在我的 aspx 登录脚本中,我没有通过 Javascript 获得服务器错误消息。我不明白问题出在哪里或出了什么问题。

脚本向此 URL 发送 Ajax 响应:login.aspx?ajax=true 出错时,它会收到带有错误消息的 403 错误代码。但是在数据值中找不到错误消息。 VB中是否还有其他一些我必须发送的参数?还是我在 Javascript 中犯了错误?

在 Firebug 中我可以看到错误消息。

HTML

登录失败。还剩 3 次尝试。

login.aspx

function onError(data) {
  $('#errormessage').text(this);
  $.mobile.changePage("#loginError", {
    transition: "pop",
    reverse: false,
    changeHash: false
  });
  $("#Submit1").click(function() {
    var formData = $("#loginform").serialize();
    $.ajax({
      type: "POST",
      url: "login.aspx",
      cache: false,
      data: formData,
      success: onSuccess,
      error: onError
    });
    return false;
  });

aspx.vb

Catch ex As AccessDeniedException
  Response.StatusCode = 403
  Response.Write(ex.Message)
    'Response.AppendHeader("XML", "<xml><error>" + ex.Message + "</error></xml>")
    'Response.StatusDescription = "<xml><error>" + ex.Message + "</error></xml>"
    'Response.Status = ex.Message
  Response.End()

【问题讨论】:

  • 你有标签,而不是标题。
  • 用}关闭onError函数

标签: javascript jquery asp.net vb.net jquery-mobile


【解决方案1】:

来自 jQuery ajax 文档

error(jqXHR, textStatus, errorThrown)Function

请求失败时调用的函数。该函数接收三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象,一个描述发生的错误类型的字符串和一个可选的异常对象(如果发生)。第二个参数(除了 null)的可能值是“timeout”、“error”、“abort”和“parsererror”。发生 HTTP 错误时,errorThrown 会接收 HTTP 状态的文本部分,例如“未找到”或“内部服务器错误”。从 jQuery 1.5 开始,错误设置可以接受一个函数数组。每个函数都会被依次调用。注意:跨域脚本和 JSONP 请求不调用此处理程序。这是一个 Ajax 事件。

因此,如果您想要 HTTP 状态,请将 errorThrown 放入 html 中,或者将其从您 data 变量当前代表的 jqXHR 变量中挖掘出来。

【讨论】: