2009-07-21 9 views
0

私は緊密に結合されたjavascriptを持っています。そこにはif-elseチェックと複数のajax呼び出しがあります。 ajax呼び出しはネストされた型です。私の問題は、深く入れ子にされたAjax呼び出し可能関数であり、そこから正常に出て行きたいということです。ネストされたAjaxから出る方法

コードのスニペットはです。

function showSubscriptionLightBox() { 

$.get("/ajax/get_subscription_lightbox_content.php?feed_id=" + feedid, function(data) { 

//Work on the data we receive... and check whether user is logged in. 

if(userLoggedIn) { 

//Make one more ajax call 

$.get("/ajax/is_user_subscribed.php?feed_id=" + feedid, function(data) { 

//Work on data again.... and check if user is subscribed. 

if(userSubscribed) { 

//Then there is popup which comes up, a part of same page and it has a button name "task". 
document.getElementById('task').onclick = function() { 

if(document.getElementById('email_mode').checked) { 
$.ajax({ 
url : "ajax/is_user_email_verified.php?user_id="+userID, 
success : function(data) { 
    if(!data) 
    return; 

    var response; 
    response = eval("response = " + data); 

    if(!response) 
     return; 

    if(response['email_status'] == 0) { 
     //Exit from here 
}}} 

...... コードの他の部分..

応答[ 'email_status'] == 0

を教えてくださいときに私は、JavaScriptから正常に終了したいです、 これを行う方法??

私はreturn文を試しましたが、スクリプトの外ではなく囲み関数に私がかかりました。

おかげで、

アミット

答えて

0

私のアプリケーションの中からいくつかのコードがあります。 JSONPとAJAXを使ってレコードを同期させます。まず、リモートサーバーからオブジェクトIDの配列を取得します。次に、ホスト・サーバーからゼロ索引のオブジェクトIDのレコードを取り出します。次に、受信したレコードをリモートサーバーに送信します。その時点で、IDの配列にインクリメントされたインデックスを持つプロセスを開始することによってプロセスを継続します。インデックスが配列の最後に到達すると終了します。

(function($) { 
    $.getJSON('http://remote.com/admin/record_ids.js?callback=?', function(data) { 
     var set_record = function(index) { 
      if (index < data.length) { 
       $.get('record_get.json', { contact_id: data[ index ] }, function(data) { 
        $.getJSON('http://remote.com/admin/record_save.js?callback=?', data, function() { 
         set_record(index + 1); 
        }); 
       }, 'json'); 
      } 
     }; 
     set_record(0); 
    }); 
})(jQuery); 

ご覧のとおり、正常に出かけるには、電話しないでください。私はあなたがなぜあなたのコードを止めるために戻ることができないのか想像できません。

0

あなたは常にコールスタックを逃れるためにJavaScriptで使用することができます面白いトリックがあります:のsetTimeout()。多くの状況で便利ですが、これだけでなく、ブラウザでDOMイベント関連のバグを回避するためによく使用されます。

$.ajax(
{ 
    url: 'lol.php', 
    success: function(data) 
    { 
     setTimeOut(function() 
     { 
      // Your code comes here 
     }, 0); // 0 will ensure that it gets executed immediately 
    } 
}); 
0

私はPrototypeでtry/catchブロックでこれを行うことができます。内部関数の1つの中からオブジェクトを投げることができ、他の関数がインターセプトするためにコールスタックを移動します。

関連する問題