如何从ajax调用中获取返回值?

时间:2012-11-30 16:20:06

标签: javascript jquery ajax

我想使用函数获取ajax调用的值。但值始终返回为undefined。返回值只有1或0。

这是我的代码:

$(function(){ 
   $('#add_product').click(function(){ 
     var i = $('#product_name').val(); 
     param = 'product_name='+i; 
     var value = check_product(param); 
     alert(value); 
     return false; 
   }); 
});

function check_product(param){ 
  $.ajax({ 
    type : 'POST', 
    data : param, 
    url : baseurl+'cart/check_product_name/', 
    success : function(result){ 
      //alert(result); 
      return result; 
    } 
 });
}

嗨,大家好,还在努力让这个工作。我得到的值现在显示为1或0.我现在想要完成的是我如何在if语句中完成它。我想要这样的东西。如果val = 0则返回true;否则返回false。我不确定我是否正在使用ajax功能。但如果有更好的方式可以告诉我,我会很感激。

$(function(){ 
       $('#add_product').click(function(){ 
         var i = $('#product_name').val(); 
         param = 'product_name='+i; 
         check_product(param).done(function(value) {
        var val = value; //waits until ajax is completed
         });
         if(val == 0){
            return true;
         } else{
            return false;
         }
       }); 
    });

function check_product(param){ 
  return $.ajax({ 
    type : 'POST', 
    data : param, 
    url : baseurl+'cart/check_product_name/'
 });
}

2 个答案:

答案 0 :(得分:22)

它是异步的,所以你必须等待ajax调用才能获得数据,然后才能提醒它。您可以通过返回ajax调用并使用done()轻松完成此操作,如下所示:

$(function() {
    $('#add_product').click(function() {
        var i   = $('#product_name').val(),
            par = 'product_name=' + i;

        check_product(par).done(function(value) {
            alert(value); //waits until ajax is completed
        });

        return false;
    });
});

function check_product(param) {
    return $.ajax({
        type : 'POST',
        data : param,
        url  : baseurl + 'cart/check_product_name/'
    });
}​

答案 1 :(得分:1)

将此添加到ajax选项:

dataType: "json",

并使用

return Json(dataObject, JsonRequestBehavior.AllowGet);

在你的行动方法中。

你的

return result;
ajax的成功处理程序中的

不是check_product的返回。将另一个函数(可能是匿名的)传递给check_product并调用ajax成功。