2015-07-27 5 views
1

Я хочу сделать запрос INSERT в моем php-файле для пользователей, которые были помещены в группу №3. Я знаю с PHP, вы можете проверить, была ли нажата кнопка или что-то isset, но как вы можете проверить значение, которое было отправлено и передано с помощью AJAX?Как проверить значение, которое было отправлено в форме и отправлено по вызову AJAX, в файле PHP

Итак, допустим, я изменил уровень группы на 3 (уровни группы определяются через опцию значения в форме). Как я могу выполнить проверку запроса, которая была выбрана в качестве опции?

Форма

<div class="change_group_button"> 
<a class="change_group" href="javascript:void(0)">Change User 

Permission</a> 
</div><br> 
<div id="light" class="change_group_popup"> 
    <a class="close" href="javascript:void(0)">Close</a> 
<div class="group_success" style="color: red;"></div><br> 
    <form id="update_group" action="" method="POST" accept-charset="utf-8"> 
     <div class="field"> 
     <label for="group">Group</label> 
     <input type="hidden" value="<?php echo $approved_id; ?>" id="approved_id" name="id" /> 
     <input type="hidden" value="<?php echo $approved_firstname; ?>" id="approved_firstname" name="firstname" /> 
     <input type="hidden" value="<?php echo $approved_lastname; ?>" id="approved_lastname" name="lastname" /> 
     <input type="hidden" value="<?php echo $approved_username; ?>" id="approved_username" name="username" /> 
     <input type="hidden" value="<?php echo $approved_email; ?>" id="approved_email" name="email" /> 
     <select id='group_id' name='group' required> 
      <option value=''><?php echo htmlentities($group); ?></option> 
      <option value="1">Bench</option> 
      <option value="2">Spectator</option> 
      <option value="3">Team Member</option> 
      <option value="4">Commissioner</option> 
     </select> 
    </div> 
    <input type="submit" value="submit" name="group"> 
    </form> 

AJAX вызов

$('#update_group').on('submit', function (event) { 
    event.preventDefault(); 
     $.ajax({ 
      url: 'user_group_update.php', 
      type: 'POST', 
      data: { 
      id: $("#approved_id").val(), //id 
      firstname: $("#approved_firstname").val(), //firstname 
      lastname: $("#approved_lastname").val(), //lastname 
      username: $("#approved_username").val(), //username 
      email: $("#approved_email").val(), //email 
      // update_group: $("#group_id").val() //group level 
      update_group: $(this).find("#group_id option:selected").val() 
     }, 
      success: function (data) { 
       //do something with the data that got returned 
       $(".group_success").fadeIn(); 
       $(".group_success").show(); 
       $('.group_success').html('User Permission Level Changed!'); 
       $('.group_success').delay(5000).fadeOut(400); 
       alert(data); 
      }, 
      error: function(jqXHR, textStatus,errorThrown) 
      { 
       // alert on an http error 
       alert(textStatus + errorThrown); 
      } 
     }); 
     return false; 
    }); 

В моем PHP файл я получаю эти поля из формы ..

$approved_id = $_POST['id']; 
//test - delete if it doesn't work 
$approved_firstname = $_POST['firstname']; 
$approved_lastname = $_POST['lastname']; 
$approved_username = $_POST['username']; 
$approved_email = $_POST['email']; 
$change_group = $_POST['update_group']; 
+0

ajax не является магическим. это просто обычный простой HTTP-запрос, как и любой другой HTTP-запрос, который просто выполняется в «фоновом режиме» браузера, а не «на вашем лице», как в большинстве форм. –

+0

Я не уверен, что вы просите ... Значение, которое вы ищете, находится в переменной '$ change_group', не так ли? Что именно здесь не работает? – David

+0

Ничего. Просто проверьте значения в '$ _POST'. – Jigar

ответ

1

В РНР файл, который принимает POST, вы можете сделать свою проверку значения:

$approved_id = $_POST['id']; 

if($approved_id == '3') 
{ 
    //do something 
} 
else 
{ 
    //do something else 
} 
//test - delete if it doesn't work 
$approved_firstname = $_POST['firstname']; 
$approved_lastname = $_POST['lastname']; 
$approved_username = $_POST['username']; 
$approved_email = $_POST['email']; 
$change_group = $_POST['update_group']; 
+0

У меня есть другой запрос в моем PHP-файле, для которого требуется значение группы (group #), независимо от того, что это такое. Итак, если бы я поставил это под этот запрос, это было бы хорошо? – Paul

+0

Да, насколько я могу судить, это должно сработать. Удачи! – tllewellyn

0

Вы можете просто проверить, если ваш сценарий был POST 'ed и убедитесь, что POST не пуст, чтобы убедиться, что он содержит такие данные:

if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST)) {} 
0

фреймворков, таких как JQuery, отправить специальный заголовок с запросом POST для AJAX - так что вы можете сделать это:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    // your code 
} 

Некоторые основы программирования, как CodeIgniter, имеют свои собственные функции, чтобы сделать это проще:

$this->input->is_ajax_request(); 

Помните, что это может быть подделка.

0

если вы хотите обезопасить свой АЯКС вызов. генерировать токен и сопоставлять этот токен в контроллере. они доступны в каждой структуре. , если вы хотите сделать это в пользовательском PHP, чем вы должны сделать сеанс на странице загрузки и соответствовать этому сеансу в вашем почтовом запросе.

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