2016-01-21 68 views
0

我想知道在ajax回調函數中調用ajax是否是一種很好的做法(可以稱爲嵌套ajax調用?)?反正這是我的例子在ajax回調之後調用ajax是否是一種好習慣?

ajax.js

$(document).ready(function() { 
    $('#button').click(function() { 
     var string = 'some string'; 
     $.post('ajax-call.php', 
     { 
      string: string 
     }, function(result) { 

      if(result == 'success') { 

       // Second ajax call if result returned is success 
       $.post('second-ajax.php', 
       { 
        variable: 'Some Variable' 
       }, function(second_result) { 

        if(second_result == 'yes') { 
         // Do some thing when the second result returned 'yes' 
        } else { 
         // Alert error or something 
        } 
       }); 

      } else { 
       // If first result is not success, show a message 
      } 
     }); 
    }); 
}); 

所以基本上我有一個要求不同的時間兩個獨立的PHP文件,如果第一個AJAX調用返回「成功」然後繼續撥打第二個AJAX呼叫。或者我應該使用一個ajax調用,一個php腳本,並根據回調的結果決定怎麼做?下面的例子。

ajax2.js

$(document).ready(function() { 
    $('#button').click(function() { 
     var string = 'some string'; 
     $.post('ajax-call.php', 
     { 
      string: string 
     }, function(result) { 
      if(result == 'success') { 
       // Do something 
      } else if(result == 'unsuccessful') { 
       // If first result is not success, show a message 
      } else { 
       // Show error message 
      } 
     }); 
    }); 
}); 

*注:這兩個PHP腳本是相當沉重的,長腳本第一腳本代碼用於驗證Ajax調用,如果一切是正確驗證,繼續執行第二阿賈克斯調用將數據處理成數據庫等等。第一個例子將使腳本更乾淨整潔,但我想知道是否使用嵌套ajax是好習慣?

所有的建議和意見都非常受歡迎。預先感謝您對此有所啓發。

+1

你最好創建一個處理所有邏輯的服務器端腳本,同時調用你的兩個腳本服務器端。然後,您只需要讓一個請求客戶端處理來自服務器的所有相關數據 –

+0

如果您需要2個請求,則鏈接承諾更爲清晰,而不是嵌套Ajax調用。這樣可以以多種方式重複使用呼叫,而目前的情況已將它們硬連線在一起:) –

+0

感謝您的建議。 @ A.Wolff所以你說第二個腳本(ajax2.js)更好? – Charas

回答

0

回答這個問題:

  • 如果兩個Ajax調用兩種不同的服務的第二呼叫取決於第一反應,我會做到這一點。
  • 如果他們是獨立服務,我將使用promise並在解決這兩個問題時執行回調。

也許不關注問題本身,但我看到奇怪的做兩個服務器調用只是一個真正的行爲(第二個)。
我會做的只是打一個電話。如果驗證未通過,則返回錯誤。如果通過,請在服務器端調用另一個php,並向客戶端返回一個vlid響應。
服務器應該做同樣的工作,但是保存從客戶端到服務器的一個數據傳輸。
這只是一個意見。我希望它對你有所幫助。

相關問題