JQuery / AJAX:在输入字段更改时,创建 php 会话,并刷新当前页面

JQuery / AJAX: On Input Field change, create php session, and refresh current page

我有两个输入字段。一个用于显示业务,另一个隐藏,称为 auto_search_id 并转到服务器。我已经创建了自动完成功能。我想要做的是,如果用户开始键入并决定单击已存储业务的自动完成列表项,该页面将获取 id,将其发送到 update.php 页面以更新 PHP 会话id,然后用当前Session id刷新页面。

在找出正确的 AJAX 编码时遇到问题。我对输入字段的更改功能不起作用。它会调出自动完成功能,但是当单击自动完成列表项时,它不会发送 id 并刷新页面。我仍然是 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"  />  

首先您需要检查更改事件是否被调用。在里面放一个警报。保持session需要传递id调用参数PHPSESSID,但是有一定的安全隐患,请阅读:http://php.net/manual/pt_BR/function.session-id.php

我无法重现代码,但我发现有两处错误:

1 调用 $("#auto_search_id").val(ui.item.value); 实际上会设置输入的新值,但不会触发它的 change 事件。你应该像这样触发它:

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

2 您正在尝试向服务器发送响应(尚不可用)。 A 假设您要将隐藏字段值发送到服务器。

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