2017-01-25 1 views
0

У меня есть два поля ввода. Один для шоу называется бизнес, а другой скрыт с именем auto_search_id и переходит на сервер. Я уже создал функцию автозаполнения. То, что я хочу сделать, - это когда пользователь начинает вводить текст и решает щелкнуть элемент списка автозаполнения, который уже хранит предприятия, страница принимает идентификатор, отправляет его на страницу update.php для обновления идентификатора сеанса PHP, а затем обновляет страницы с текущим идентификатором сеанса.JQuery/AJAX: On Input Смена поля, создание сеанса php и обновление текущей страницы

Проблемы с определением правильного кодирования AJAX. Моя функция изменения для поля ввода не работает. Он вытягивает автозаполнение, но когда кликнут элемент автообновления списка, он не отправляет идентификатор и не обновляет страницу. Я все еще новичок в JQuery/AJAX, но думаю, что я что-то пропускаю в функции изменения #auto_search_id, но не знаю, что. Пожалуйста, помогите ...

Javascript/JQuery/Ajax

<script> 
     $(document).ready(function(){ 
      $("#business").autocomplete({ 
       minLength: 2, 
       source: function(request, response){ 
        $.ajax({ 
         type: "POST", 
         url: "/autocomplete-pq.php", 
         dataType: "json", 
         data:'keyword=' + request.term, 
         success: function(data){ 
          response(data); 
         } 
        }); 
       }, 
       select: function(event, ui){ 
        $("#business").val(ui.item.label); 
        $("#auto_search_id").val(ui.item.value); 
        return false; 
       } 
      }); 

      $("#auto_search_id").change(function(){ 
       $.ajax({ 
        type:'POST', 
        url:"/update.php", 
        data: { varname: reponse}, 
        success:function(response){ 
         location.reload() 
        } 
       });    
      }); 
     }); 

    </script> 

PHP

<?php 
     session_start(); 
     $_SESSION["id"] = $_POST["varname"]; 
     echo $_SESSION["id"]; 
    ?> 

HTML

<input type="text" id="business" name="jurisdiction" value="<?php echo $juristiction ?>" required> 
    <input type="hidden" name="search" id="auto_search_id" /> 

ответ

1

Я не могу воспроизвести код, но я вижу 2 вещи ошибиться:

1 Вызов $("#auto_search_id").val(ui.item.value); на самом деле устанавливает новое значение ввода, однако оно не вызывает его изменение событие. Вы должны вызвать его так:

$("#auto_search_id").val(ui.item.value).trigger("change"); 

2 Вы пытаетесь отправить ответ (который еще недоступен) на сервер. Предположим, вы хотите отправить значение скрытого поля на сервер.

$("#auto_search_id").change(function(){ 
    var newID = $(this).val(); 
    $.ajax({ 
    type:'POST', 
    url:"/update.php", 
    data: {varname: newID}, 
    success:function(response){ 
     location.reload() 
    } 
    });    
}); 
+0

Это помогло много. Я знал, что я что-то собираю, чтобы получить скрытое значение, отправленное на сервер. Спасибо, спасибо. – ShadyNicNack

0

Сначала вам нужно проверить, если событие изменения называют. Поместите в него предупреждение. Для поддержания сеанса, вам нужно передать это идентификатор вызова PHPSESSID параметр, но он имеет некоторые последствия для безопасности, пожалуйста, прочитайте: http://php.net/manual/pt_BR/function.session-id.php