Кто-нибудь знает хороший способ написать расширение jQuery для обработки параметров строки запроса? Я в основном хочу расширить магическую ($)
функцию jQuery, чтобы я мог сделать что-то вроде этого:
$('?search').val();
Что бы дать мне значение «тест» в следующем URL: http://www.example.com/index.php?search=test
.
Я видел много функций, которые могут делать это в jQuery и Javascript, но на самом деле я хочу расширить jQuery для работы точно так, как показано выше. Я не ищу плагин jQuery, я ищу расширение для метода jQuery.
javascript
jquery
url
jquery-plugins
query-string
TroySteven
источник
источник
$
достаточно перегружен?Ответы:
После многих лет уродливого анализа строк, есть лучший способ: URLSearchParams Давайте посмотрим, как мы можем использовать этот новый API для получения значений из местоположения!
ОБНОВЛЕНИЕ: IE не поддерживается
используйте эту функцию из ответа ниже вместо URLSearchParams
источник
Зачем расширять JQuery? Какая польза от расширения jQuery по сравнению с наличием глобальной функции?
http://jsfiddle.net/gilly3/sgxcL/
Альтернативный подход состоит в том, чтобы проанализировать всю строку запроса и сохранить значения в объекте для последующего использования. Этот подход не требует регулярного выражения и расширяет
window.location
объект (но может также легко использовать глобальную переменную):http://jsfiddle.net/gilly3/YnCeu/
Эта версия также использует
Array.forEach()
, который изначально недоступен в IE7 и IE8. Его можно добавить, используя реализацию в MDN , или$.each()
вместо этого можно использовать jQuery .источник
name=value
пар, разделенных символом&
. Если в вашем коде используется пользовательский формат строки запроса, очевидно, вам нужно написать собственный анализатор строки запроса, где бы ни использовалась строка запроса, будь то на сервере или на клиенте.GET
представление формы закодировано какapplication/x-www-form-urlencoded
со значениями, разделенными&
. Мой код обрабатывает этот стандарт. Пользовательские структуры URL, такие как та, которую вы связали, потребуют пользовательского анализатора на стороне сервера и на стороне клиента. В любом случае, добавление такой возможности в мой код выше было бы тривиальным.Плагин JQuery jQuery-URL-Parser выполняет ту же работу, например, чтобы получить значение параметра строки поискового запроса, вы можете использоватьЭта библиотека активно не поддерживается. Как полагает автор одного и того же плагина, вы можете использовать URI.js .
Или вместо этого вы можете использовать js-url . Это очень похоже на приведенный ниже.
Таким образом, вы можете получить доступ к параметру запроса, как
$.url('?search')
источник
file://
протоколу приведет к тому, что больше не будет работать. Вы можете создать очень быстрый и простой статический HTML-сервер с помощью node.js. stackoverflow.com/questions/16333790/…Нашел этот драгоценный камень от наших друзей в SitePoint. https://www.sitepoint.com/url-parameters-jquery/ .
Использование PURE JQuery. Я просто использовал это, и это сработало. Подправил это, например, ради.
Используй как хочешь.
источник
results[1] || 0
вы должны выполнить if (results) {return results [1]} return 0; Параметры запроса bcoz могут вообще отсутствовать. И модификация будет обрабатывать все общие случаи.https://example.com/?c=Order+ID
? Этот знак плюс все еще остается в этой функции.Это не мой пример кода, но я использовал его в прошлом.
источник
Я написал небольшую функцию, где вам нужно только разобрать имя параметра запроса. Так что если у вас есть:? Project = 12 & Mode = 200 & date = 2013-05-27 и вам нужен параметр 'Mode', вам нужно только разобрать имя 'Mode' в функцию:
источник
Основываясь на ответе @Rob Neild выше, здесь приведена чистая адаптация JS, которая возвращает простой объект с декодированными параметрами строки запроса (без% 20 и т. Д.).
источник
""
. И вы получите {"": "undefined"}Написано в ванильном Javascript
источник
Я использую это.
источник