我想使用函数获取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/'
});
}
答案 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成功。