0

私の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()
4

1 に答える 1

0

jQuery ajaxのドキュメントから

error(jqXHR, textStatus, errorThrown)関数

リクエストが失敗した場合に呼び出される関数。この関数は 3 つの引数を受け取ります。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト、発生したエラーの種類を説明する文字列、およびオプションの例外オブジェクト (発生した場合) です。2 番目の引数 (null 以外) に指定できる値は、"timeout"、"error"、"abort"、および "parsererror" です。HTTP エラーが発生すると、errorThrown は「Not Found」や「Internal Server Error」などの HTTP ステータスのテキスト部分を受け取ります。jQuery 1.5 以降、エラー設定は関数の配列を受け入れることができます。各関数が順番に呼び出されます。注: このハンドラは、クロスドメイン スクリプトおよび JSONP リクエストでは呼び出されません。これは Ajax イベントです。

したがって、HTTP ステータスが必要な場合は、を html に入れるか、変数が現在表している変数errorThrownから掘り出します。jqXHRdata

于 2012-06-28T14:12:25.550 に答える