Я внедряю мгновенный поиск Google в своем приложении. Я хотел бы отключить HTTP-запросы, когда пользователь вводит текст. Единственная проблема, с которой я сталкиваюсь, заключается в том, что, когда пользователь попадает в пробел между именем и фамилией, пробел не кодируется как +
, тем самым нарушая поиск. Как я могу заменить пробел на +
, или просто безопасно URL кодировать строку?
$("#search").keypress(function(){
var query = "{% url accounts.views.instasearch %}?q=" + $('#tags').val();
var options = {};
$("#results").html(ajax_load).load(query);
});
javascript
jquery
ajax
http
Брайан Д
источник
источник
$.param
.Ответы:
Попробуйте кодировать URIComponent .
Пример:
источник
у меня отлично работает encodeURIComponent . мы можем дать URL-адрес, как это в вызове ajax. Код, показанный ниже:
источник
Лучший способ:
encodeURIComponent экранирует все символы, кроме следующих:
alphabetic, decimal digits, - _ . ! ~ * ' ( )
Чтобы избежать неожиданных запросов к серверу, вы должны вызывать encodeURIComponent для любых введенных пользователем параметров, которые будут переданы как часть URI. Например, пользователь может ввести «Thyme & time = again» для комментария к переменной. Если вы не используете encodeURIComponent для этой переменной, вы получите комментарий = Thyme% 20 & time = снова. Обратите внимание, что амперсанд и знак равенства обозначают новую пару ключ и значение. Таким образом, вместо того, чтобы иметь ключ комментария POST, равный «Thyme & time = again», у вас есть два ключа POST, один из которых равен «Thyme», а другой (time) - снова.
Для application / x-www-form-urlencoded (POST), согласно http://www.w3.org/TR/html401/interac...m-content-type , пробелы должны быть заменены на «+», поэтому Можно выполнить замену encodeURIComponent с дополнительной заменой «% 20» на «+».
Если кто-то хочет быть более строгим в соблюдении RFC 3986 (который резервирует!, ', (,) И *), даже если эти символы не имеют формализованного использования с разделителями URI, можно безопасно использовать следующее:
источник
For application/x-www-form-urlencoded (POST), per http://www.w3.org/TR/html401/interac...m-content-type, spaces are to be replaced by '+', so one may wish to follow a encodeURIComponent replacement with an additional replacement of "%20" with "+".
Как это сделать?Я использую MVC3 / EntityFramework в качестве бэкэнда, интерфейс использует все мои контроллеры проекта через jquery, для публикации напрямую (с использованием $ .post) не требуется указание данных, когда вы передаете параметры напрямую, а не URL, жестко закодированные. Я уже протестировал несколько символов, я даже отправил URL (этот http://www.ihackforfun.eu/index.php?title=update-on-url-crazy&more=1&c=1&tb=1&pb=1 ) в качестве параметра и имел нет проблем вообще, хотя encodeURIComponent прекрасно работает, когда вы передаете все данные в URL (жестко закодированы)
URL в жестком коде, т.е.>
В противном случае не используйте encodeURIComponent и попробуйте передать параметры в методе ajax post
источник
Попробуй это
источник