2015-02-13 3 views
0

Прошу прощения, добавьте этот широкий вопрос здесь, но я не могу, похоже, сам это сделать, я попытался, и я действительно не могу понять эту идею, так что здесь.
Итак, у меня есть веб-сайт, который использует AJAX для входа пользователя без полной перезагрузки страницы. Я отчасти понимаю, как работает AJAX, и я извиняюсь за мое невежество, но в моем случае:Что входит в Responce в jQuery AJAX?

$.ajax({ 
      url: './', 
      type: 'POST', 
      data: {auth: auth, login: login, pass: pass} 
      success: function(res){ 
       // Code that checks if **res** is a specific string 
      }, 
      error: function(){ 
       alert("Error!"); 
      } 

Я понимаю, что это отправляет запрос POST на ту же страницу с 3 параметрами. Я не понимаю, что конкретно он получает в качестве ответа? В моем случае в res находится элемент $_SESSION, который содержит строковое сообщение.
Мой вопрос: Как я узнаю, что попадает в ответ? Если бы я просто echo что-то в моей функции, это бы попало в ответ? Есть ли документация о том, что можно передать аргументам функции успеха?
Я действительно смущен этим.

+1

Это зависит от методов сервера, на которых размещается форма ...:) –

+1

используйте консольную панель-> сеть в хром или firebug на firefox, чтобы увидеть ответ. Вы также можете установить следующие данные: 'auth =' + auth + '& login =' + login + '& pass =' ​​+ pass – Tarek

+1

попробуйте с предупреждением (res) в функции успеха. что когда-либо вы пишете в ответ, оно будет присвоено параметру res param в функции успеха; –

ответ

2

в «Рес» ... или обычно «данные» в большинстве примеров, просто ответные данные вашей страницы, что ваша проводка ..

Так говорят в случае PHP ... вы бы да просто эхо вернувшись к нему.

часто люди используют JSON, поэтому с PHP вы можете создать массив со всеми данными вы хотите отправить обратно, а затем просто сделать

вашей страницы Отправляет POST

<script> 
    // JUST USING SUCCESS HERE ATM (Tthis does not show the full ajax command) 
    // Refer to original question for full javascript 
    success: function(res){ 
     var myData = $.parseJSON(res); 
     if(myData.hasOwnProperty('name')){ 
      alert(myData.name); 
     } 
     if(myData.hasOwnProperty('object1') && myData.object1.hasOwnProperty('items')){ 
      alert(myData.object1.items.one); 
     } 
    }, 
</script> 

РНР СТРАНИЦЫ ЧТО ОТВЕЧАЕТ

<?php 
    $myResponse = array(); 
    $myResponse['name'] = "John Doe"; 
    $myResponse['number'] = 123456789; 
    $myResponse['other'] = "and so on"; 
    $myResponse['object1'] = array(); 
    $myResponse['object2'] = array(); 

    $myResponse['object1']['name'] = "john"; 
    $myResponse['object1']['items'] = array(); 
    $myResponse['object1']['items']['one'] = "one one 1"; 
    $myResponse['object1']['items']['two'] = "two two 2"; 

    $myResponse['object2']['name'] = "jane"; 


    echo json_encode($myResponse); 
?> 

с помощью «многомерный» массив в PHP, вы можете рассматривать каждую часть массива в виде отдельного раздела/объекта

Это может помочь: http://www.thecave.info/pass-a-php-array-to-javascript-as-json-using-ajax-and-json_encode/

+0

Большое спасибо, теперь это имеет больше смысла. Но скажем, я бы хотел передать пару вариаций, могу ли я сделать это как-то? Или вы можете передавать только одну вещь за раз? (Так что, как 1 переменная, или 1 массив, или 1 объект) – Arno

+2

С помощью JSON/PHP Array ... Вы можете технически передать сразу несколько элементов .. Будет обновляться/редактировать. – Mayhem

+1

Обновлен мой ответ .. Короткий ответ может быть возвращен только один объект/массив. Но вы просто делаете это для нескольких объектов/массива для обработки нескольких элементов. – Mayhem

1

Ну, я думаю, что ты «эхо» является то, что вы будете получать в «разрешении», попытаться увидеть его в консоли с:

console.log(res); 

Или с предупреждением

alert(res); 
+0

Должен быть комментарий к исходному вопросу, так как это точно не отвечает на главный вопрос. Более того, это не дает верного примера того, что отправить с PHP или как справиться с ответом/данными – Mayhem

+0

Хорошо, получилось. .. –

1

попробовать console.log(res); и проверьте консоль браузера

ctrl + shift + k (светлячок)

f12 (Chrome & IE)

+2

Должен быть комментарий к исходному вопросу, так как это точно не отвечает на главный вопрос. Более того, он не дает верного примера того, что отправить с PHP или как справиться с ответом/данными. – Mayhem

1

Для вас задачи I рекомендуется использовать getJSON вместо .ajax. Это просто сокращение для той же функции, но очень удобно.

$.getJSON('/ajax-get-session/login/value/pass/value', function(json){ 
    if (!json.error) { //check if there wasn't error on the server side 
     console.log(json.session); 
    } else { 
     console.log(json.error); 
    } 
}); 

И на стороне сервера.

$response = array(); 
try { 
    $response['session'] = $_SESSION; 

} 
catch (e) { 
    $response['error'] = e; 

} 

echo json_encode($response) 
+1

Проблема с getJSON. .. это только использует запросы «GET» .. так что если пользователь хочет иметь дело с ситуацией POST .. Затем им нужно использовать AJAX в любом случае .. просто ajax - идеальная функция, которая работает во всех случаях. Сокращенный код может вызывают часы чуда .. – Mayhem

Смежные вопросы