1

クリックイベントで呼び出される関数に次のajax呼び出しがあります。

$.ajax({
  url:"server.php",
  type:'GET',
  data: {'action':'addEvent'},
  success: function(response)
  {
    if(response)
    {
    alert("200 ok");                
    }
 },
 error: function(xhr, ajaxOptions, ThrownError)
 {
   alert("Error:" + ThrownError);
   $("#output").text("Error: "+ThrownError);
 }
}); 

php側は以下の通りです。

  if(isset($_GET["action"]))
   {
      $action = $_GET["action"];
     if($action == 'addEvent')
     {
          echo("ping");
     }

   }

これでエラーがスローされます。しかし、私が受け取るエラーメッセージは次のとおりです。

正確に、私はエラーを受け取ります:

それは私を夢中にさせています。

また、document.readyを入れて、ある種のpingとして機能させると、完全に機能しました。

4

2 に答える 2

2

この jsFiddleを見てください。私はあなたが持っているのと同じエラーを取得しています。

なぜそれが起こっているのか: リンクがクリックされ、ajax リクエストが送信されます。ただし、デフォルトのアクションは停止されず、ブラウザーは で指定された URL に移動しhref、JS の実行を停止します。AJAX 呼び出しも停止します。

それを防ぐには、次のようにする必要があります。

$('a').click(function(e) { 
    $.ajax({
      url:"server.php",
      type:'GET',
      data: {'action':'addEvent'},
      success: function(response) {
        if(response) {
           alert("200 ok");                
        }
      },
      error: function(xhr, ajaxOptions, ThrownError) {
         alert("Error:" + ThrownError);
         $("#output").text("Error: "+ThrownError);
      }
   }); 
   e.preventDefault();//this will not allow browser to move to a different URL
   return false; //alternative to e.preventDefault(). 
});​

同様の問題がある可能性がありますが、要素が単純なページのリロードを引き起こし、ブラウザが同じページに移動するため、気づきにくいです。

于 2012-10-30T13:03:49.850 に答える
0

エラーの関数定義は次のとおりです。

error(jqXHR, textStatus, errorThrown)

さらに、次のように定義して、より多くの情報を取得してみてください

statusCode

応答に対応するコードがある場合に呼び出される数値 HTTP コードと関数のマップ。たとえば、次の例では、応答ステータスが 404 の場合にアラートが発生します。

$.ajax({
  statusCode: {
    404: function() {
      alert('page not found');
    }
  }
});

リクエストが成功した場合、ステータス コード関数は成功コールバックと同じパラメータを受け取ります。エラーが発生した場合は、エラー コールバックと同じパラメーターを受け取ります。

success(data, textStatus, jqXHR)

これで、さらに 2 つの関数が定義されました (成功 + http コード)。したがって、リクエストが失敗した場合はエラーでコードが実行され、成功した場合は実行されsuccessます。どちらの場合も、http 応答コードを取得します。コードが 200 かどうかを確認すると、すべてがうまくいきました。404 - スクリプトの URL が間違っています。500 - サーバー エラーなどがあります。

于 2012-10-30T12:33:10.267 に答える