2016-09-20 50 views
0
var App = { 
actionRequest: function (url,data,callback){ 
    var that = this; 
    $('#menu').panel('close'); 
    $.mobile.loading('show'); 
    $.when(

     $.ajax({ 
      method: 'POST', 
      url: url + '?' + new Date().getTime(), 
      data: data 
     })    

    ).done(function(data,html) {   
      that.refreshCart(); 
      $.mobile.loading('hide');    
     } 

    ); 
} 

refreshCart: function(){   
    App.loadExternalContent('content','scripts/data_ajax.php','action=getCart','templates/cart.htm'); 
    } 
} 

我需要在「.done」中調用refreshCart。如何在「.done」中編寫回調函數來執行此操作?對不起,我是Ajax新手。Ajax在完成後調用另一個Ajax功能

回答

1
var object = { 
    actionRequest: function(url, data, callback) { 
    $('#menu').panel('close'); 
    $.mobile.loading('show'); 
    $.ajax({ 
     method: 'POST', 
     url: url + '?' + new Date().getTime(), 
     data: data 
    }).done(function(data, html) { 
     if ($.isFunction(callback)) { 
      callback(); 
     } 
     $.mobile.loading('hide'); 
     } 
    ); 
    } 
} 

用法:

如果refreshCart是函數的對象,你也可以這樣做:

var object = { 
    actionRequest: function(url, data, callback) { 
     var that = this; 

     $('#menu').panel('close'); 
     $.mobile.loading('show'); 
     $.ajax({ 
      method: 'POST', 
      url: url + '?' + new Date().getTime(), 
      data: data 
      }).done(function(data, html) { 
       // without using a callback 
       that.refreshCart(); 
       $.mobile.loading('hide'); 
      } 

     ); 
     }, 
     refreshCart: function() { 
      App.loadExternalContent('content', 'scripts/data_ajax.php', 'action=getCart', 'templates/cart.htm'); 
     } 
    } 

下面是如何使用Ajax的例子請求

$.ajax({ 
 
    url: 'http://echo.jsontest.com/title/ipsum/content/blah', 
 
    method: 'GET' 
 
    }) 
 
    .done(function(response) { 
 
    console.log(response); 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

我需要調用這個函數refreshCart。可能嗎? –

+0

當然,它只是傳遞'refreshCart'作爲一個函數,或看看我的替代品,你不需要通過函數作爲回調 – WalksAway

+0

我把.done函數中的警報 alert('test'); \t 但警報不起作用。 –

1

我假設你在課堂上引用這段代碼。

actionRequest: function (url,data,callback){ 
    var self = this; //keep reference of current instance for more info read closures in JS 
    $('#menu').panel('close'); 
    $.mobile.loading('show'); 
    $.when(

     $.ajax({ 
      method: 'POST', 
      url: url + '?' + new Date().getTime(), 
      data: data 
     })    

    ).done(function(data,html) {   
      self.refreshCart(); 
      $.mobile.loading('hide');    
     } 

    ); 
} 

refreshCart: function(){   
    App.loadExternalContent('content','scripts/data_ajax.php','action=getCart','templates/cart.htm'); 
} 
0

的Ajax功能:

actionRequest: function (url,data,callback){ 
    $('#menu').panel('close'); 
    $.mobile.loading('show'); 
    $.when(

     $.ajax({ 
      method: 'POST', 
      url: url + '?' + new Date().getTime(), 
      data: data 
     })    

    ).done(function(data,html) {   
      callback(); 
      $.mobile.loading('hide');    
     } 

    ); 
} 

通話功能:

actionRequest(url, data, refreshCart); 
相關問題