Php 如何将ajax返回值设置为变量
我有以下成功执行的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",
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
。我修正了我的答案。试着在你的代码中修改。同样的问题,你的解决方案很好!!,我也喜欢你的坦白。很好。也谢谢你。非常感谢!