Php 调用Ajax并返回响应
我找了这么多问题,但没有得到正确的答案。根据我的研究,我做了以下函数,我知道ajax调用是异步的,所以在它完成后,将一个值传递给全局变量并返回该值,但我得到一个空白或未定义的值。我可以使用$('#someid').html作为响应或其他一些方法来实现它,但我不想实现它们。知道我做错了什么吗Php 调用Ajax并返回响应,php,javascript,jquery,Php,Javascript,Jquery,我找了这么多问题,但没有得到正确的答案。根据我的研究,我做了以下函数,我知道ajax调用是异步的,所以在它完成后,将一个值传递给全局变量并返回该值,但我得到一个空白或未定义的值。我可以使用$('#someid').html作为响应或其他一些方法来实现它,但我不想实现它们。知道我做错了什么吗 function SimpleAjax(form, postData, url) { var returnData; var sendData; if (form == "") {
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;
}
问题是
返回数据代码>发生在成功或完成函数执行之前。正如你所说,它是异步的。但是,函数SimpleAjax是同步运行的
因此它启动Ajax调用$.Ajax({…})
,然后执行返回数据代码>
我所做的,不是使用一个全球性的,那只会让你头疼。但是传入一个函数以在成功时执行,而不是尝试返回结果
类似于
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);
});
问题是返回数据代码>发生在成功或完成函数执行之前。正如你所说,它是异步的。但是,函数SimpleAjax是同步运行的
因此它启动Ajax调用$.Ajax({…})
,然后执行返回数据代码>
我所做的,不是使用一个全球性的,那只会让你头疼。但是传入一个函数以在成功时执行,而不是尝试返回结果
类似于
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);
});
我也找到了答案,我认为。完成将发挥神奇的作用,并在ajax完成后返回值,但它没有这样做。。。。
把这个密码
async:false
在ajax中,它将工作
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 ,
async: false,
success: function(data)
{
if (data != null || typeof data!='undefined')
{
returnData= data;
}
}
});
return returnData;
}
我也找到了答案,我认为。完成将发挥神奇的作用,并在ajax完成后返回值,但它没有这样做。。。。
把这个密码
async:false
在ajax中,它将工作
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 ,
async: false,
success: function(data)
{
if (data != null || typeof data!='undefined')
{
returnData= data;
}
}
});
return returnData;
}
Ajax是异步的,因此在完成之前不会设置returnData
。调用SimpleAjax()
将始终返回undefined,因为ajax请求在函数返回之前不会完成。使用回调。您无法返回响应数据,因为它是异步检索的,正如@jeremyharris刚才所说。Ajax是异步的,因此在完成之前不会设置returnData
。调用SimpleAjax()
将始终返回undefined,因为ajax请求在函数返回之前不会完成。使用回调。您不能返回响应数据,因为它是异步检索的,正如@jeremyharris刚才所说的。这不是一个好主意。不进行异步回调会给您带来很多麻烦。它降低了页面速度,否定了使用Ajax的所有优点。请注意,强烈反对使用异步Ajax。它有许多缺点,并且偏离了Javascript的常见编程模式。感谢您提供的信息。按照另一个答案通过回拨这不是一个好主意。不进行异步回调会给您带来很多麻烦。它降低了页面速度,否定了使用Ajax的所有优点。请注意,强烈反对使用异步Ajax。它有许多缺点,并且偏离了Javascript的常见编程模式。感谢您提供的信息。接另一通电话back@AbdulBasit,太好了,祝你的项目好运@AbdulBasit,太好了,祝你的项目好运!