1

サーバーからスクリプトを取得するために JQuery Ajax を使用しています。

$.ajax({
    url: src,
    type: "GET",
    dataType: "script",
    timeout: transaction_timeout
}).done(function(){})
.fail(function() { alert("Error in server");})
.always(function() {Aegis.end();});

次に、サーバーは次のような結果を得るために、それをオーバーライドする必要があるコールバック関数を返します。

function callbackfunction(msg){
    var obj = jQuery.parseJSON(msg);
    var result = obj.result;
}

コールバック関数にアラートを入れるまで、すべてが正常に機能しています

function callbackfunction(msg){
    var obj = jQuery.parseJSON(msg);
    var result = obj.result;
    alert(result);
}

ユーザーがタイムアウトになる前に [OK] をクリックしないと、タイムアウト エラーが発生し、「サーバーでエラーが発生しました」という警告が表示されます。

一方、コールバック関数が呼び出された場合、トランザクションが成功したことを意味します。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

1つの解決策は次のとおりです。

setTimeout(function(){alert(result);},0);

しかし、最善の方法は、おそらくまったく使用alertしないことです。console.logを使用しないのはなぜですか?

編集:メッセージを簡単な方法で表示したい場合、それはそれほど難しくありません:

$('<div>').text('message!').css({position:'fixed', top:0, background:'yellow'})
.click(function(){$(this).remove()}).appendTo(document.body);

(クリックするとメッセージが消えます)

于 2013-05-29T10:45:15.000 に答える