获取$ .ajax POST返回的多个值

时间:2011-07-19 19:41:56

标签: php jquery ajax

我有一些在mouseclick上执行的ajax代码。它调用一个名为update.php的文件来执行一系列操作,包括检查用户权限,大量数据库调用等。最后,我还希望能够从PHP返回一些变量以供回调使用,但不确定如何引用它们 - 或者是否有更好的方法来返回此信息。

$.ajax({
type: "POST",
url: "update.php",
data: dataString,
success: callback 

});

function callback(data, status)
{
// $("div").text(data);
$("div.numbert").text("[first variable here]");
$("div.numbert2").text("[second variable here]");
        }

来自我的update.php文件(一些片段):

    if ($check_access > 0)
    {
// Update database 

$sql = "UPDATE db SET access = '1' WHERE user = '$user'";
$result = mysql_query($sql) or die(mysql_error());


// Give access - function returns data to variable
$value = GiveAccess($user);


// Email - function returns data to variable
$emaillist = emailAdmins($user);    

    } else {

$message = "Sorry you do not have access";
    }

所以我想弄清楚如何在我的回调中使用变量$ message,$ value和$ emaillist。

我想知道我是否只需要进行多个$ .ajax POST调用,每个.php函数返回一个有自己调用的变量?

谢谢!


---- UPDATE -------

更新了尝试使用json方法的代码 - 感谢所有帮助 - 但似乎我最后遗漏了一件事。

    $.ajax({
type: "POST",
url: "update.php",
data: dataString,
dataType: 'json',
    success: callback 

});

function callback(data, status)
{
// $("div").text(data);
$("div.numbert").text(data.value);
$("div.numbert2").text(data.emaillist);

和update.php:

    $storage = array();
// Update database 

$sql = "UPDATE db SET access = '1' WHERE user = '$user'";
$result = mysql_query($sql) or die(mysql_error());


// Give access - function returns data to variable
$storage['value'] = "some user";


// Email - function returns data to variable
    $storage['emaillist'] = "some stuff";   

    header('Content-type: application/json');
    echo json_encode($storage);
    exit(0);    

再次感谢。

4 个答案:

答案 0 :(得分:5)

您可以使用JSON包装器:

$messages = array();
$messages['value'] = GiveAccess($user);
$messages['emaillist'] = emailAdmins($user);
$messages['message'] = "Sorry you do not have access";

echo json_encode($messages);

然后简单地使用:

data.value    data.emaillist    data.message 

在您的Javascript中。

答案 1 :(得分:2)

最简单的方法是使用JSON ...

$.ajax({
type: "POST",
url: "update.php",
data: dataString,
dataType: 'json',
success: callback 

});

function callback(data, status)
{
  // $("div").text(data);
  if(data.error){
    alert(error.message||'Unknown Error');
  } else {
     $("div.numbert").text(data.access||'No value');
     $("div.numbert2").text(data.emailList||'No value');
  }

}

PHP:

if ($check_access > 0)
    {
// Update database 

$sql = "UPDATE db SET access = '1' WHERE user = '$user'";
$result = mysql_query($sql) or die(mysql_error());
$responseData = array();


// Give access - function returns data to variable
$responseData['access'] = GiveAccess($user);


// Email - function returns data to variable
$responseData['emailList'] = emailAdmins($user);    

    } else {

$responseData['error'] = array('code' => 403, 'message' => "Sorry you do not have access");
    }

header('Content-type: application/json');
print json_encode($responseData);
exit(0);

答案 2 :(得分:0)

不,只返回一个JSON对象或可以解析的分隔数据集。

答案 3 :(得分:0)

您可以使用json返回您的值:

$storage = array();
 if ($check_access > 0)
    {
// Update database 

$sql = "UPDATE db SET access = '1' WHERE user = '$user'";
$result = mysql_query($sql) or die(mysql_error());


// Give access - function returns data to variable
$value = GiveAccess($user);
$storage['value'] = $value;

// Email - function returns data to variable
$emaillist = emailAdmins($user);  
$storage['emaillist'] = $emaillist;  

    } else {

$message = "Sorry you do not have access";
$storage['message'] = $message;
    }

header(“Content-Type:application / json; charset = utf8”);     $ return = json_encode($ storage);     echo $ return; 出口;

然后,您可以遍历该对象并转到

function callback(data, status)
{
// $("div").text(data);
$("div.numbert").text(data.value);
$("div.numbert2").text(data.emaillist);
        }