jquery добавить get параметр в url
Добавление параметра в URL с помощью JavaScript
в веб-приложении, которое использует вызовы AJAX, мне нужно отправить запрос, но добавить параметр в конец URL, например:
ищет функцию JavaScript, которая анализирует URL, глядя на каждый параметр, затем добавляет новый параметр или обновляет значение, если оно уже существует.
27 ответов:
базовая реализация, которую вам нужно будет адаптировать, будет выглядеть примерно так:
это примерно в два раза быстрее, чем регулярное выражение или поисковое решение, но это полностью зависит от длины строки запроса и индекса любого соответствия
медленный метод регулярных выражений, который я сравнивал с целью завершения (приблизительно + 150% медленнее)
спасибо всем за Ваш вклад. Я использовал annakata код и изменен, чтобы также включить случай, когда в url-адресе вообще нет строки запроса. Надеюсь, это поможет.
Это очень простое решение. Он не контролирует существование параметра, и он не изменяет существующее значение. Он добавляет ваш параметр в конец, так что вы можете получить последнее значение в вашем внутреннем коде.
вот значительно упрощенная версия, делающая компромиссы для удобочитаемости и меньшего количества строк кода вместо микро-оптимизированной производительности (и мы говорим о разнице в несколько миллисекунд, реалистично. из-за характера этого (работает на месте текущего документа), это, скорее всего, будет выполняться один раз на странице).
вы бы тогда использовали это так:
У меня есть «класс», который делает это, и вот он:
Я переопределил метод toString, поэтому нет необходимости вызывать QS::getQueryString, вы можете использовать QS:: toString или, как я сделал в примерах, просто полагаться на объект, который принуждается к строке.
и обратите внимание, что параметры должны быть закодированы перед добавлением в строку запроса.
если у вас есть строка с url, которую вы хотите украсить с помощью param, вы можете попробовать это:
Я бы также рекомендовал сделать encodeURI( paramvariable ) Если вы не зашит параметр, но он находится внутри paramvariable ; или если у вас есть смешные персонажи в нем.
Примечание: расположение.происхождение не работает в IE вот его исправить.
Uri и обработка строки запроса в javascript.
этот проект включает в себя отличную библиотеку регулярных выражений parseUri Стивена Левитана. Вы можете безопасно анализировать URL-адреса всех форм и размеров, какими бы недопустимыми или отвратительными они ни были.
Это простой способ добавить параметр запроса:
Это то, что я использую, когда дело доходит до некоторых основных дополнений url param или обновлений на стороне сервера, как узел.js.
следующая функция поможет вам добавлять, обновлять и удалять параметры в URL или из URL
Это была моя собственная попытка, но я буду использовать ответ аннакаты, поскольку он кажется намного чище:
кроме того, я нашел этот плагин jQuery из другого сообщения на stackoverflow, и если вам нужна большая гибкость, вы можете использовать это: http://plugins.jquery.com/project/query-object
Я думаю, что код будет (не проверял):
Я бы пошел с этой небольшая, но полная библиотека для обработки URL-адресов в js:
мне нравится ответ Мехмета Фатиха Йылдыза, даже он не ответил на весь вопрос.
в той же строке, как и его ответ, я использую этот код:
» Its не контролирует существование параметра, и он не изменяет существующее значение. Он добавляет ваш параметр в конец»
простое решение, если у вас уже есть тег или нет, и удаляет его автоматически, поэтому он не будет продолжать добавлять равное теги, удачи
метод регулярного выражения:
Если вы возитесь с URL-адресами в ссылках или где-то еще, возможно, Вам также придется учитывать хэш. Вот довольно простое для понимания решение. Вероятно, не самый быстрый так как он использует регулярное выражение. но в 99.999% случаев, разница действительно не имеет значения!
самое простое решение, которое я могу придумать, это этот метод, который вернет измененный URI. Я чувствую, что большинство из вас работают слишком усердно.
насколько я могу судить, ни один из приведенных выше ответов не касается случая, когда строка запроса содержит параметры, которые сами являются массивом и, следовательно, будут появляться более одного раза, например:
Манипулирование URL’ами в JavaScript
Из года в год, сталкиваюсь с одной и той же проблемой. Как добавить, изменить или удалить параметр к некоторому адресу в строковом виде. Быстро и грязно это можно делать с помощью, например, регулярных выражений или найти каке-то готовое решение. Зачастую также может потребоваться, к примеру, подменить путь в адресе или изменить протокол с HTTP на HTTPS и т.д.
В целом, это хочется делать просто и понятно. При этом хочется разумного компромиса. Я встречал некоторые библиотеки, которые дают мощный функционал, но при этом по объему — десятки килобайт JavaScript кода. Несколько десятков килобайт, чтобы, например, подменить параметр в QueryString? Эх…
В общем, написал свое решение, которое нашел удобным, в первую очередь, для себя. При решении также позаимствовал накопленный опыт товарища Jan Wolter по поводу парсинга QueryString в JavaScript (осторожно — английский). Это хоть несколько и увеличило объем кода, зато способно избавить от некоторых проблем.
Итак, мое решение можно забирать отсюда — github.com/Mikhus/jsurl. Лицензия — MIT, так что делайте все, что захотите. Минифицированный и пожатый gzip’ом код получился менее килобайта, что должно быть приемлимым. Зависимостей от каких-либо других библиотек не наблюдается. API — простой: сначала превращаем строку с адресом в объект Url и далее обращаемся с ним в зависимости от ситуации — либо как со строкой, либо как с объектом. Например, так:
Любые замечания, доработки, найденные баги, форки и другие кошерные вещи — приветствуются и благодарятся.
jQuery.get()
Загружает данные с сервера, используя HTTP GET запрос.
version added: 1.0 jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
url
Тип: строка
Адрес, на который отправляется запрос.
data
Тип: объект или строка
Данные, отправляемые на сервер в виде объекта (ключ:значение) или строки.
success(data, textStatus, jqXHR)
Тип: функция
Функция, вызываемая при успешном завершении Ajax запроса.
dataType
Тип: строка
Тип данных, ожидаемых в качестве ответа от сервера. По умолчанию jQuery определит сам.
$.get() эквивалетна:
Функция обратного вызова success, принимает ответ от сервера, который может быть в виде XML, строки, JavaScript файла или объекта JSON, в зависимости от MIME типа ответа. Это значение так же помещается в статус ответа.
Начиная с версии 1.5, функция обратного вызова success принимает объект jqXHR (в ранних версиях объект XMLHttpRequest). В случае использования JSONP, значение второго и третьего параметры функции будет неопределённым (undefined), т.к. при кросс-доменных GET запросах, объект XHR не используется.
Данный код делает запрос к HTML файлу и выводит его содержимое.
Объект jqXHR
Заметка об устаревших методах
Функции обратного действия, введённые в jQuery 1.5 устарени в версии 1.8. Вместо jqXHR.success(), jqXHR.error() и jqXHR.complete() теперь следует использовать jqXHR.done(), jqXHR.fail() и jqXHR.always().
Примеры
Сделать запрос к test.php, игнорируя ответ:
Сделать запрос к test.php, передать данные, игнорировать ответ:
Передать массив данных на сервер, игнорируя ответ:
Обработать ответ от сервера (HTML или XML в зависимости от того, что пришло):
Сделать запрос к test.cgi, предать данные, обработать ответ (HTML или XML в зависимости от того, что пришло):
Как передать GET параметр
Всем привет! Столкнулся с задачей передачи GET параметра в ссылку. При переходе к пример с фейсбука, нужно подставить в ссылку другой номер телефона и другой её параметр. К примеру у меня есть ссылка с номером :
Мне нужно как-то реализовать, что бы при переходе к примеру с того же фейсбука эта ссылка меняла свое значение на следующий:
Не судите строго, ещё учусь Буду благодарен за любую подробную информацию!
2 ответа 2
Если я правильно понял вопрос, то есть 2 кейса.
Переход по линке с Facebook
Думаю, что на facebook у вас есть некая группа, где вы указываете ссылки для перехода на Ваш сайт.
В этом случае, эту ссылку на фейсбуке можно сделать такой:
Далее, при загрузке уже вашего сайта, смотреть, что есть в url и в зависимости от этого менять содержимое контейнера:
И Ваша разметка поменяется на:
Что такое onLoad и как его кушать описано тут
Прямой переход
При прямом переходе в адресной строке не будет параметров. Событие onLoad все также вызовется, но ничего не сделает, как раз из-за отсутствия параметров.
Я просто привел пример, как это можно сделать, но это лишь один из возможных вариантов. К тому же, требующий более щепетильных проверок.
Если вы используете фреймворк, то это может помочь Вам выполнить подобную обработку
Я бы проверял, так же, значение параметра. Дело в том, что GET параметры может подставить в ссылку любой и, если вы будете просто проверять, если ли параметр tel или нет, то выводимое в Вашей ссылки значение может оказаться неожиданным =)
Кроме того, возможно решение через просмотр истории, если у Вас есть доступ к бэкенду. JavaScript не позволяет получать доступ к предыдущим URL, только к навигации.
Как отправить через jquery ajax, get параметры?
Мои коллеги говорят все верно, разберемся еще раз с запросом к серверу (к php-файлу):
jQuery.ajax() с GET-запросом можно заменить на jQuery.get()
То есть, грубо говоря, чтобы скрипт выполнился, нужно просто запустить (задействовать) нужный файл. Что и делает Ajax. Он просто открывает (как Вы в браузере) эту страницу, но вы этого не видите.
Причем, он делает это асинхронно (код будет работать и дальше, не ожидая ответа), для чего нужны колбеки (функции, которые выполняются после успешного/неуспешного запроса).
Как сделать запрос?
Чтобы, используя jQuery, отправить get параметры через ajax вы можете воспользоваться jQuery.ajax или jQuery.get.
А когда вы говорите «перезагрузить без перезагрузки», вы что имеете в виду?
Просто делаете запрос, а потом добавьте параметры в урл после запятой или напрямую задать параметром