如何获取传递到ajax帖子的值

时间:2013-11-12 05:59:45

标签: ajax variables post

这是我的代码,

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()中添加了异步。

1 个答案:

答案 0 :(得分:0)

您应该区分函数的返回值(在您的情况下为getMods())和回调函数(success)。

在你的代码中,你调用getMods()实际上没有返回任何值,因此你得到 undefined

success回调仅在您的函数返回后一段时间后才会发生。

一种可能的解决方案(尽管不是最好的解决方案,因为它会锁定您的JS处理)是以同步方式使用Ajax调用。仅在收到服务器答复时返回的呼叫。在async: false来电中使用$.ajax,捕获您的返回值,然后将其返回。请参阅此示例:https://stackoverflow.com/a/2592780/290343

当然,您应该知道您的Ajax调用可能会失败,您需要考虑到这一点。此外,您的代码可能运行速度非常慢,因为它会对服务器进行6次远程调用。