2016-09-20 2 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'); 
    } 
} 

Мне нужно вызвать refreshCart в «.done». Как я могу написать функцию обратного вызова в «.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);