我搜索了很多问题,但没有得到正确的答案。我根据我的研究制作了以下函数,我知道ajax调用是异步的,因此它完成将值传递给全局变量并返回该值,但我得到一个空白或未定义的值。我可以使用 $('#someid' ).html 响应或其他一些方法,但我不想实现它们。知道我在这里做错了什么
function SimpleAjax(form, postData, url)
{
var returnData;
var sendData;
if (form == "") {
sendData = postData;
}
else if (postData == "") {
sendData = $(form).serialize();
}
$.ajax({
type: 'POST',
url: url,
cache: false,
data: sendData,
success: function(data)
{
if (data != null || typeof data != 'undefined') {
returnData = data;
}
}
}).done(function(data) {
returnData = data;
});
return returnData;
}
最佳答案
问题是 返回 returnData;
发生在 success 或 done 函数执行之前。正如你所说,它是异步的。但是,您的函数 SimpleAjax 正在同步运行。
因此它开始 Ajax 调用 $.ajax({ ... });
,然后执行 return returnData;
。
我所做的不是使用全局变量,那只会让你头疼。但传入一个函数以在成功时执行,而不是尝试返回结果。
类似...
function SimpleAjax(form, postData, url, successCallback)
{
var returnData;
var sendData;
if (form == "") {
sendData = postData;
}
else if (postData == "") {
sendData = $(form).serialize();
}
$.ajax({
type: 'POST',
url: url,
cache: false,
data: sendData,
success: successCallback
});
}
//TODO: set your input parameters
SimpleAjax(form, postdata, url, function(data) {
alert(data);
});
关于php - 调用 Ajax 并返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12301875/