Получение нескольких значений, возвращаемых из $ .ajax POST - PullRequest
1 голос
/ 19 июля 2011

У меня есть некоторый код 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 функция, которая возвращает переменную с собственным вызовом?

Спасибо!


---- ОБНОВЛЕНИЕ -------

Обновление кода при попыткеиспользовать методы 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 ]

5 голосов
/ 19 июля 2011

Вы можете использовать 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.

2 голосов
/ 19 июля 2011

Самый простой способ - использовать 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);
0 голосов
/ 19 июля 2011

Вы можете вернуть свои значения, используя 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);
        }
0 голосов
/ 19 июля 2011

Нет, просто верните объект JSON или набор данных с разделителями, которые можно проанализировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...