2012-05-02 14 views
0

私は、互いにフィードバックする一連のダイアログやAJAX結果を表示していました。例えば。ユーザーがクリックすると、ajax呼び出しを起動し、ダイアログが開き、ユーザーがフォームに記入して送信し、ダイアログが閉じられ、フォームがAJAX経由で送信され、別のAJAX応答がダイアログを開くか、ユーザーをリダイレクトする。このプロセスでは、すべてのブラウザで最初のダイアログが表示されますが、SafariとChromeでは2番目のダイアログにエラーが表示されます。私はそれがすべてのブラウザで見つけることを確認している95%です。今は失敗するようです。エラー関数が起動され、ブラウザは2番目のAJAXリクエストに使用されたURLを開きます。複数のAjaxクエリーを順番に送信するとクロムとSafariでエラーが発生する

jquery、PHP、javascriptを使用しており、eval(json)コマンドから実行していました。私はそれ以来、生のJavascriptを返すコードを再構成しました。

いずれにしても、エラーはAJAXクエリの 'エラー'ハンドラで発生します。返されるエラーは非常に情報価値がありません。 Chromeにはキャッシュプロセスがありますが、どのように影響を与えるか、またはサファリに存在するかどうかはわかりません。いずれにしても、返されたjavascriptが実行される前に2回目の呼び出しでajaxがサファリとクロムで失敗するようです。以前はすべてのブラウザで動作していたと思いますが、今はあまりよく分かりません。私はほぼ半日を過ごしたので、私はいくつかの援助に感謝します。 :

function page(url){ 
    $.ajax({ 
      type: "POST", 
      url: url, 
      success : ajaxReturn, 
      cache: false, 
      dataType: 'script', 
      error: function(result, status, err) { 
       alert('HTTP ' + result.status + ' Error Encountered: ' + result.statusText); 
       alert(result.responseText); 
       alert('status: '+status+' error: '+err); 
      return; 
      } 
     }); 

} 

function ajaxReturn(ret){ 
    eval(ret); 
    $.unblockUI(); 
} 

を次のようにAJAX呼び出しを実行するために使用されるD

Javascriptの関数であるこれは、AJAX呼び出しの両方で使用されるのと同じコードです。場合によっては(フォームにエラーが見つかった場合はIE)、戻りコードは事実上全く同じです。私はすべての対話、AJAX、関連するプロセスが今まではうまくいきました。私は、エラーハンドラから返されます

メッセージは以下のとおりです。

HTTP 0 Errpr Encountered: error 

その後

<null> 

その後、

status:error error: 

警告声明を介して出力されるようどこに空のダイアログがありますか? したがって、同じajax関数が実行され、同じコードが返されているため、ChromeとSafariで2番目の呼び出しで問題が発生しています。何が返されるのかにかかわらず、エラーハンドラでは失敗しています。理由はわかりません。

答えて

1

これで問題が見つかりました。ダイアログ内のフォームの内容は、別のAJAXコールを介して提出されました。したがって、fromコンテンツのonsubmitハンドラがjquery経由でシリアル化され、AJAXに送信されました。問題は、onSubmitハンドラでAJAX呼び出しの後でfalseを返さなかったことです。だからクロムとサファリの何らかの理由でこれはエラーステータス0を返し、AJAX経由で呼び出されたページに私を転送します。

いずれの場合もfalseを返します。甘い!

関連する問題