这是我的代码,
function getMods(name){
var init;
$.ajax({
type: "POST",
url: "init.php",
data: { 'id': getID(), 'Name': name },
cache: false,
success: function(data)
{
return data;
},
async:false
});
}
function init(){
var gm = '<br/>';
var gm1 = getMods('Name');
$('#brand').append(gm1);
var gm2 = getMods('Owner');
var gm3 = getMods('Admin1');
var gm4 = getMods('Admin2');
var gm5 = getMods('Admin3');
var gm6 = getMods('Admin4');
$('#online3').append(gm2 + gm + gm3 + gm + gm4 + gm + gm5 + gm + gm6 + gm);
}
getMods()返回“undefined”。当我使用这段代码时:
alert(data);
该页面提醒了正确的值。
这是php文件init.php:
<?php
include('dbconnect.php');
if(isset($_POST['id']) && isset($_POST['Name'])){
$id = $_POST['id'];
$name = $_POST['Name'];
$init = chatMods($name,$id,$username,$password);
echo $init;
}
?>
我在getMods()中添加了异步。
答案 0 :(得分:0)
您应该区分函数的返回值(在您的情况下为getMods()
)和回调函数(success
)。
在你的代码中,你调用getMods()
实际上没有返回任何值,因此你得到 undefined 。
success
回调仅在您的函数返回后一段时间后才会发生。
一种可能的解决方案(尽管不是最好的解决方案,因为它会锁定您的JS处理)是以同步方式使用Ajax调用。仅在收到服务器答复时返回的呼叫。在async: false
来电中使用$.ajax
,捕获您的返回值,然后将其返回。请参阅此示例:https://stackoverflow.com/a/2592780/290343
当然,您应该知道您的Ajax调用可能会失败,您需要考虑到这一点。此外,您的代码可能运行速度非常慢,因为它会对服务器进行6次远程调用。