2012-06-07 5 views
0

У меня окно поиска работает с jquery и php, когда вы вводите что-то в это окно поиска, jquery готовит запрос и перенаправляет местоположение. Подготовка части запроса работает хорошо, но часть перенаправления имеет проблему с кодированным запросом. Страница автоматически декодирует закодированный запрос перед перенаправлением.Javascript encodeURIComponent issue on redirection

Если вы введете «test1 test2 test3» в поле поиска, он успешно кодирует запрос к test1% 20test2% 20test3 с помощью encodeURIComponent().

Теперь страница будет перенаправлена ​​на result.php + query. Моя проблема заключается в том, что страница идет на result.php? Q = test1 test2 test3 вместо result.php? Q = test1% 20test2% 20test3.

здесь коды

if($("#searchbox").val() != "") 
{ 
    var mq1 = encodeURIComponent($("#searchbox").val()); 
    var query = "q="+mq1; 

} 

alert(query); 
if(query!="") 
location = "result.php?"+query; 

оповещения результат д = test1% 20test2% 20test3, но она идет result.php д = test1 test2 test3

редактировать: Если я использую функцию encodeURIComponent с перенаправления кодов он работает хорошо.

alert(query); 
if(query!="") 
location = "result.php?"+encodeURIComponentquery); 

Эти коды работают, но кодируют q = часть тоже.

ответ

0

Поскольку вы используете JQuery, почему бы не написать это:

if ($("#searchbox").val()) { 
    location = 'result.php?' + $.param({ 
     q: $("#searchbox").val() 
    }); 
} 
+0

Не знал, что, да, это исправило мою проблему. – Malixxl

1

Я думаю, может быть, это просто браузер показывает test1 test2 test3 в адресной строке, но сервер получает правильное значение. Вы можете проверить это с помощью инструментов браузера dev, таких как firebug, или даже проверить это на сервере.

+0

Я немного меняю коды, чтобы проверить это. Редактирование вопроса сейчас. См. Редактирование, пожалуйста. – Malixxl

0

Почему бы не изменить его result.php?q=+encodeURIComponent(query)

0

Вот вариант того, что вы написали - он ждет клавишу ввода чтобы ударить после ввода в запросе (так как я не был уверен в контексте вашего кода, находится ли он в методе представить в виде):

$('#searchbox').keypress(function(e) { 
    if(e.which == 13 && $(this) { 
     $(this).blur(); 
     var mq1 = encodeURIComponent($(this).val()); 
     var query = "q="+mq1; 
     window.location = "result.php?"+ query; 
    } 
}); 

Использование т его, он создает следующий URL:

result.php?q=multiple%20words%20in%20the%20url%20work%20fine 

Я думаю, что ваш код был почти там, но логика окружающего заявления IF вызывали вопросы.