Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 调用Ajax并返回响应_Php_Javascript_Jquery - Fatal编程技术网

Php 调用Ajax并返回响应

Php 调用Ajax并返回响应,php,javascript,jquery,Php,Javascript,Jquery,我找了这么多问题,但没有得到正确的答案。根据我的研究,我做了以下函数,我知道ajax调用是异步的,所以在它完成后,将一个值传递给全局变量并返回该值,但我得到一个空白或未定义的值。我可以使用$('#someid').html作为响应或其他一些方法来实现它,但我不想实现它们。知道我做错了什么吗 function SimpleAjax(form, postData, url) { var returnData; var sendData; if (form == "") {

我找了这么多问题,但没有得到正确的答案。根据我的研究,我做了以下函数,我知道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;
}​

问题是
返回数据发生在成功或完成函数执行之前。正如你所说,它是异步的。但是,函数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,太好了,祝你的项目好运!