我正在使用具有自动完成功能的搜索表单。我的自动完成工作正常。我想在设置自动完成值后将数据发送到另一个php页面。 下面是我自动完成的jquery。
function autocomplet() {
var min_length = 1; // min caracters to display the autocomplete
var keyword = $('#searchitem').val();
var search_location = $('#search_location').val();
var datastring= 'keyword='+ keyword + '&search_location='+search_location;
if (keyword.length >= min_length) {
$.ajax({
url: 'global_search.php',
type: 'POST',
data: datastring,
success:function(data){
$('#search_list_id').show();
$('#search_list_id').html(data);
}
});
} else {
$('#search_list_id').hide();
}
}
// set_item : this function will be executed when we select an item
function set_item(item) {
// change input value
$('#searchitem').val(item);
window.location.href = 'searchtestr.php?key=' + data
// hide proposition list
$('#search_list_id').hide();
}
我尝试window.location.href = 'searchtestr.php?key=' + data
重定向页面,但它不起作用。条件是从自动完成中选择一些东西后页面应该重定向。
答案 0 :(得分:0)
您需要在set_item
处理程序中调用success
方法:
success:function(data){
$('#search_list_id').show();
$('#search_list_id').html(data);
set_item(data.item); //data.something
}
此外,您尝试将名为data
的变量传递到下一页,但set_item
方法无法访问该变量。您必须发送item
,例如window.location.href = 'searchtestr.php?key=' + item;
此外,我不确定您是否正在使用SPA(猜测不是)...我不认为在重定向页面后修改DOM是有意义的 - 例如$('#search_list_id').hide();
和$('#searchitem').val(item);
。您知道window.location.href
没有触发AJAX调用并且会重定向整个页面吗?
答案 1 :(得分:0)
试试这个
function autocomplet() {
var min_length = 1; // min caracters to display the autocomplete
var keyword = $('#searchitem').val();
var search_location = $('#search_location').val();
var datastring= 'keyword='+ keyword + '&search_location='+search_location;
if (keyword.length >= min_length) {
$.ajax({
url: 'global_search.php',
type: 'POST',
data: datastring,
success:function(data){
$('#search_list_id').show();
$('#search_list_id').html(data);
},
change: function (event, ui) {
if (ui.item == null || ui.item == undefined) {
} else {
window.location.href = 'searchtestr.php?key=' + data;
}
});
} else {
$('#search_list_id').hide();
}
}

答案 2 :(得分:-1)
我尝试过如下,但它确实有效。我担心的是设置值后重定向到php页面。
function autocomplet() {
var min_length = 1; // min caracters to display the autocomplete
var keyword = $('#searchitem').val();
var search_location = $('#search_location').val();
var datastring= 'keyword='+ keyword + '&search_location='+search_location;
if (keyword.length >= min_length) {
$.ajax({
url: 'global_search.php',
type: 'POST',
data: datastring,
success:function(data){
$('#search_list_id').show();
$('#search_list_id').html(data);
}
});
} else {
$('#search_list_id').hide();
}
}
// set_item : this function will be executed when we select an item
function set_item(item) {
// change input value
$('#searchitem').val(item);
// hide proposition list
$('#search_list_id').hide();
var location = $('#search_location').val();
var search_term = $('#searchitem').val();
if(search_term != ''){
window.location.href = 'searchtestr.php?location=' + location + '&search_term='+ search_term;
}
}
谢谢大家的帮助。