Php 如何将ajax返回值设置为变量

Php 如何将ajax返回值设置为变量,php,jquery,ajax,Php,Jquery,Ajax,我有以下成功执行的ajax调用: function fnFormatDetails ( oTable, nTr ) { var aData = oTable.fnGetData( nTr ); var memberid = 'memberid='+ aData[6]; $.ajax({ type: "POST", url: "shout.php",

我有以下成功执行的ajax调用:

function fnFormatDetails ( oTable, nTr )
   {
            var aData = oTable.fnGetData( nTr );

            var memberid = 'memberid='+ aData[6];

            $.ajax({
                type: "POST",
                url: "shout.php",
                data: memberid,
                success: function(html) {
                    //$("#shout").html(html);   
                    var sOut = html.returned_val;
                }
            });

            return sOut;
        }
如果我删除注释掉的行($(“shout”).html(html)并在页面上使用div,结果显示良好。但是,还有第二个函数将使用sOut的html结果并相应地显示在正确的位置

shout.PHP中的PHP文件只是将HTML“echos”到页面(然后返回并相应显示)


很遗憾,我目前无法根据ajax调用的结果设置变量sOut。我缺少什么?

首先,您在成功回调方法中定义了sOut,因此无法提供详细信息

其次,默认情况下,$.ajax在异步模式下工作,因此无论何时调用“return sOut”,都不会执行成功回调


我建议您调用success中的某个方法,该方法将基于html.returned\u val执行该过程,或者您可以在$.ajax中传递async:false以使该调用同步。

如果您希望函数返回从ajax调用返回的内容,则需要同步进行调用。此外,这是假设“shout.php”是纯文本。如果是JSON或其他格式,则需要在调用
$.ajax
时设置
数据类型
属性

function fnFormatDetails ( oTable, nTr ) {
    var aData = oTable.fnGetData( nTr );
    var memberid = 'memberid='+ aData[6];

    var result;

    $.ajax({
        type: "POST",
        url: "shout.php",
        data: memberid,
        async: false,
        success: function(data) {
            result = data;
        }
    });

    return result;
}

谢谢你@Matt Huggins

async:false


这个小小的代码更改,修复了我从早上开始遇到的问题。

不确定我的问题为什么被否决?这样做的适当成员至少可以礼貌地解释一下:您确定它确实命中php服务器并给出了正确的响应吗?@fazo-是。如果没有,则返回变量带有(当前)注释将无法正确填充。$(“#shout”)表示一个基于php脚本返回的html填充的div。虽然将async:false传递到ajax调用中并不能解决问题,但第二段中的逻辑是有意义的。我不确定为什么成功回调方法不能在函数本身中诚实地使用细节。也许我没有完全理解如果未注释的代码能够以指定的“shout”显示内容,则不显示注释代码"div如果有任何调用是为了寻求帮助。出于某种原因-结果总是返回“未定义”。如果我取消对隐藏的div部分的注释,该数字会返回,这样我至少知道该调用工作正常。我的想法是?我已经尝试了几乎所有的方法,但没有尝试。@JM4-我是个白痴,我最初在这里写了
async:true
,当我应该写
async:false
。我修正了我的答案。试着在你的代码中修改。同样的问题,你的解决方案很好!!,我也喜欢你的坦白。很好。也谢谢你。非常感谢!