如何从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。 我不确定我是否正在使用ajaxfunction。 但如果有更好的方式可以告诉我,我会很感激。

 $(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/' }); } 

它是异步的,因此您必须等待ajax调用才能获得数据,然后才能发出警报。 您可以通过返回ajax调用并使用done()来轻松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/' }); }​ 

将此添加到ajax选项:

 dataType: "json", 

并使用

 return Json(dataObject, JsonRequestBehavior.AllowGet); 

在你的行动方法。

您的

 return result; 

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