如何在生成响应后从另一个方法中获取ajax请求的响应?

时间:2014-10-23 05:42:34

标签: javascript ajax

我想要从发出请求的方法生成的响应,我需要在另一个方法中生成响应。请参考以下代码以供进一步参考。

function foodLog(){


   var data={ 
          servings : $('#demo_vertical').val(),
          calories : $('#calories').text(),
          carbs : $('#carbs').text(),    
   };

       $.ajax({  
             type : "POST",   
             contentType: "application/json; charset=utf-8",
             url : "/fitbase/foodlog/create",
             dataType: "json",
             data : JSON.stringify(data),
             success : function(response) {

             },
             error : function(e) {  
                 alert("Object" +e);
                }  
               });  
   };

我需要在下面的方法中获得成功后生成的响应。我写了下面的代码,但我无法得到答案。请帮帮我。

function getValues(){
var response = foodLog();
console.log(response)
  }

4 个答案:

答案 0 :(得分:1)

您可以使用回调函数来有效地执行此操作。

function foodLog(callback){  //sending callback function as input

  var data={ 
        servings : $('#demo_vertical').val(),
        calories : $('#calories').text(),
        carbs : $('#carbs').text(),    
  };

   $.ajax({  
         type : "POST",   
         contentType: "application/json; charset=utf-8",
         url : "/fitbase/foodlog/create",
         dataType: "json",
         data : JSON.stringify(data),
         success : callback, //calling callback function when success
         error : function(e) {  
             alert("Object" +e);
            }  
           });  
}


//callback function to handle response
function callback(response){
     console.log(response);
}

当您想要调用函数“foodLog”时,

foodLog(callback);

注意:在调用之前,您必须确保已加载函数回调。您可能必须使用,

$(document).ready(function(){
    foodLog(callback);
});

答案 1 :(得分:0)

也许这个你想要的

success : function(response) {  
                 if (response == true){  
                     window.location = "/fitbase/foodlog/create/";   
                     getValues(response);  
                }  

         }

答案 2 :(得分:0)

function getValues(response){
  console.log(response);
}

function foodLog(){


 var data={ 
      servings : $('#demo_vertical').val(),
      calories : $('#calories').text(),
      carbs : $('#carbs').text(),    
 };

   $.ajax({  
         type : "POST",   
         contentType: "application/json; charset=utf-8",
         url : "/fitbase/foodlog/create",
         dataType: "json",
         data : JSON.stringify(data),
         success : function(response) {
               getValues(response);
         },
         error : function(e) {  
             alert("Object" +e);
            }  
      });  
};

答案 3 :(得分:0)

以这种方式使用变量。



var foodLogResponse = '';

function foodLog(){


   var data={ 
          servings : $('#demo_vertical').val(),
          calories : $('#calories').text(),
          carbs : $('#carbs').text(),    
   };

       $.ajax({  
             type : "POST",   
             contentType: "application/json; charset=utf-8",
             url : "/fitbase/foodlog/create",
             dataType: "json",
             data : JSON.stringify(data),
             success : function(response) {
                foodLogResponse = response;
             },
             error : function(e) {  
                 alert("Object" +e);
                }  
               });  
   };




否则你可以在成功处理程序中调用getValues函数。



success : function(response) {  
                 if (response == true){    
                     getValues(response);  
                }  

         }