2

私の Ajax 呼び出しは、次のように非常に単純です。

function ajax(reqUrl, params , callback) {
console.log("Request URL "+reqUrl);
var cond;
cond = $.ajax({
    type: 'post',
    url: reqUrl,
    data: params,
    error:function(){ alert("some error occurred") },
    success: callback
});
console.log("Server response "+cond.readyState);
}
   // Call it as 
    var url = "/getResult";
    var params = {};
    params.param1 = "test1";
    params.param2 = "test2";
    ajax(url, params, function(returnCallback) {
        console.log(returnCallback);
        alert("Success");
    });

ほとんどの場合、これで問題なく動作します。しかし、ときどき (3 回に 1 回程度) コールバックに何も返さないことがあります。

Not working ajax in Safari but fine in chrome and FireFoxに関する多くの質問と回答が見つかりました。ほとんどの場合は問題ないため、私の問題はそれらとは異なります(ブラウザを更新すると、ajax呼び出しが機能する可能性があるため、通常は問題がなかったわけではありません)。

私の主な質問は、私の ajax 呼び出しが時々失敗するのはなぜですか? JS コンソールでエラーは発生しません。この状況では、ブラウザを更新して ajax 呼び出しを取得します。何か案は?

アップデート:

console.log("Request URL "+reqUrl);が原因で、ajax 呼び出しメソッドが呼び出されないことがあることがわかりました。実行しませんでした。ブラウザを更新したくないときは、ページのリンクを何度もクリックして結果を出しました。何か実行が遅くなる?

4

5 に答える 5

4

最後に、エラーが見つかりました..キャッシュを無効にしても、SafariはJavaScriptファイルを再度リロードしません。そこで、すべての JS コードを次の場所に配置しました。

$(document).ready(function(){
 // start load my js functions
 init();
});

ページの準備ができたときに JS ファイルをリロードします。乾杯!

于 2013-09-13T09:37:58.213 に答える
2

私もこの問題に遭遇しました。

すべてのコードを に移動する$(function() {})と、機能しました。

keyその後、問題の原因となったという名前の変数を定義したことがわかりました。

名前を変更するだけで、すべてが実行されます。

于 2016-03-10T11:11:56.260 に答える
1

これは Safari の問題のようです。この投稿では、ajax-request に beforeSend を追加することを提案しています。

あなたの場合:

cond = $.ajax({
    type: 'post',
    url: reqUrl,
    data: params,
    beforeSend: function (event, files, index, xhr, handler, callBack) {
         $.ajax({
             async: false,
             url: 'closeconnection.php' // add path
         });
    },
    error:function(){ alert("some error occurred") },
    success: callback
});
于 2013-09-16T06:12:45.663 に答える
0

以下のコードをテストしてください。それは正常に動作しています。

$.ajax({
type: "POST",
url:'@Url.Action("getResult","Controller")', 
data: "{userName :'" + userName  + "',password :'" + password + "' }",
contentType: "application/json; charset=utf-8",
dataType: "html",
success: function (data) {
alert("here" + data.toString());
});
于 2013-09-13T06:23:26.627 に答える