1

HTMLページにボタンがあります。

<input type="image" src="images/login_button.png" id="imageButton" onclick="LoginButtonClick();" />

ボタンのクリック時にこのメソッドを呼び出しています:

LoginButtonClick = function() {
    alert ("Button click event raised");  // this alert msg raising every time when onclick event occurs.
    $.ajax({  
        alert ("Inside Ajax.");  // This alert not executing first 1 or 2 times.
        type: 'GET',
        url: 'http://URL/Service.svc/LoginValidation',
        dataType: 'json',
        error: pmamml.ajaxError,
        success: function(response, status, xhr) {
            if (response != "") {
                alert ("Response receive ");
                }
            else {
                alert("Invalid Data.");
            }
        }
    });
}

上で述べたように$.ajax、最初の 2 、 3 ボタンのクリック試行は機能しません。

mozilla では、「[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: JQuery.js :: :: line 20" data:」というエラーがスローされます。番号]"

この問題を解決する方法はありますか..

4

4 に答える 4

6

なぜ後で実行されるのかわかりません。しかし、ここで対処します。.ajax メソッドのパラメーターを定義するオブジェクト リテラルにアラートを配置します。それはそこに属していません。アラートを成功および/またはエラーハンドラーに入れてみてください。

アップデート

どのくらい待っていますか?ajax リクエストを開始しても、UI がハングすることはありません。3 回目または 4 回目の試行で最初のクリックの結果が表示され、その 3 回目または 4 回目の試行でそれをトリガーしていると考えている可能性があります。

于 2012-07-10T15:45:04.013 に答える
0

この$.ajax()関数は、Ajax リクエストを構成する一連のキーと値のペアをパラメーターとして受け取ります。そこに the を入れることで構文が正しくなるとは思いませんalert()

于 2012-07-10T15:46:43.430 に答える
0

間違った場所に 2 番目のアラートがあり、pmamml.ajaxError 関数が何であるかはわかりませんが、呼び出しがエラーで返される可能性があるため、成功アラートが発生しないことに同意します。次のように、エラーと完全な関数で確認できます。

LoginButtonClick = function() {
alert ("Button click event raised");  // this alert msg raising every time when onclick event occurs.
$.ajax({  
    type: 'GET',
    url: 'http://URL/Service.svc/LoginValidation',
    dataType: 'json',
    error: function(jqXHR, textStatus, errorThrown){
          alert ("ajax call returns error: " + errorThrown);
    },
    success: function(response, status, xhr) {
        if (response != "") {
            alert ("Response receive ");
            }
        else {
            alert("Invalid Data.");
        }
    },
   complete:function(jqXHR, textStatus){
         alert('completed with either success or fail');
    }
});

}

リクエストが行われて返された場合は、Google Chrome の [開発者ツール] -> [ネットワーク] タブでテストできます (https://developers.google.com/chrome-developer-tools/docs/network)。

于 2012-07-10T19:14:24.760 に答える
0

- ドメインが現在のドメインでない場合、絶対パスを入力しても機能しません- ブラウザも準拠している同じオリジンポリシーに反しています - これは、実行時に何も起こらない理由を説明しているかもしれません - ブラウザのデバッガで確認することをお勧めします確認。

次のようにクリックイベントをバインドする必要があります。

$(document).ready(function() {
  $('#imageButton').click(function() {
    // code here
  });
});

したがって、完全なコードは次のようになります。

HTML

<input type="image" src="images/login_button.png" id="imageButton" />

JavaScript

$(document).ready(function () {
  $('#imageButton').click(function () {
    alert("Button click event raised"); // this alert msg raising every time when onclick event occurs.
    $.ajax({
      type: 'GET',
      url: 'http://URL/Service.svc/LoginValidation',
      dataType: 'json',
      error: pmamml.ajaxError,
      success: function (response, status, xhr) {
        if (response != "") {
          alert("Response receive ");
        } else {
          alert("Invalid Data.");
        }
      }
    });
  });
});

これは実行されないため、この行を削除しました。実行するコードではなく、パラメーターalert ("Inside Ajax.");のオブジェクトを渡します。{}ajax リクエストが送信される前に実行したい場合は、次のようにします。

$.ajax({
   beforeSend: function() {
     alert('inside ajax');
   }
   // other options here
});

関数のドキュメント$.ajax()はこちら

于 2012-07-10T16:05:45.773 に答える