2016-04-15 2 views
-1

Я работаю над формой поиска с функцией автозаполнения. мой автозаполнение работает нормально. Я хочу отправить данные на другую php-страницу после установки значения автозаполнения. ниже - мой jquery для автозаполнения.перенаправлять на страницу php после успеха ajax в 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

Вы должны вызвать ваш метод 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 и перенаправляет всю страницу?

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); 
 
      }, 
 
\t \t \t change: function (event, ui) { 
 
\t \t \t if (ui.item == null || ui.item == undefined) { 
 
\t \t 
 
\t \t \t } else { 
 
\t \t \t \t window.location.href = 'searchtestr.php?key=' + data; 
 
\t \t \t } 
 
     }); 
 
    } else { 
 
     $('#search_list_id').hide(); 
 
    } 
 
}

+0

получение ошибки ReferenceError: set_item не задано –

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

Спасибо всем, что помогли мне.

+0

Могу ли я узнать, почему его голос проголосовали. –

Смежные вопросы