我有两个输入字段。一个用于显示,称为业务,另一个是隐藏的,称为 auto_search_id 并转到服务器。我已经创建了自动完成功能。我想要做的是,如果用户开始输入并决定单击已存储业务的自动完成列表项,该页面将获取 id,将其发送到 update.php 页面以更新 PHP session 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" />
最佳答案
我无法重现代码,但我发现有两处错误:
1 调用 $("#auto_search_id").val(ui.item.value);
实际上设置了输入的新值,但它不会触发其更改 em> 事件。你应该像这样触发它:
$("#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()
}
});
});
关于javascript - JQuery/AJAX : On Input Field change, 创建php session ,并刷新当前页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41858965/