在jquery中ajax成功后重定向到php页面

时间:2016-04-15 12:15:30

标签: php jquery ajax autocomplete

我正在使用具有自动完成功能的搜索表单。我的自动完成工作正常。我想在设置自动完成值后将数据发送到另一个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重定向页面,但它不起作用。条件是从自动完成中选择一些东西后页面应该重定向。

3 个答案:

答案 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;
     }
}

谢谢大家的帮助。