2013-03-02 5 views
-1

У меня есть сценарий JS, который опирается на вызов AJAX, который добавляет параметр в запрос html. Я столкнулся с двумя проблемами.JS/JQuery: добавить параметр к пути с неизвестным количеством параметров

  1. Я не могу найти простой способ получить имя пути, включая параметры. В прямом JS location.pathname возвращает только текущий путь без параметров. С JQuery $(document).href возвращает весь URL-адрес, но включает в себя вещи, которые я не хочу, такие как схема, домен и т. Д. Есть ли простой, простой и простой метод, который возвращает только путь, включая параметры?
  2. Как только у меня есть путь, я еще не понял хороший способ добавления параметра, учитывая, что путь может уже включать в себя ноль или более параметров. К счастью, мне не нужно обновлять ключ, который уже существует, просто добавьте новый. Я уже нашел некоторые аналогичные вопросы о SO, например: Adding a parameter to the URL with JavaScript, но есть ли способ сделать это, не называя собственный собственный парсер URL или другой шаблонный код?
+0

Итак, у вас уже есть множество решений из этого другого вопроса. Итак, зачем вам писать собственный парсер? Они уже написаны для вас в этих ответах. Они также показывают, как получить параметры из 'location'. Возможно, вам нужно просто потратить некоторое время и работать с кодом, который вы нашли. –

+0

Возможный дубликат [Добавление параметра в URL с JavaScript] (http://stackoverflow.com/questions/486896/adding-a-parameter-to-the-url-with-javascript) –

+0

И если вы используете jQuery, '$ (document) .href' не возвращает целое' href'. Он возвращает 'undefined'. –

ответ

0

Я нашел ответ на свой вопрос.

Это оказалось намного проще, чем любое другое решение, которое я нашел до сих пор.

В JS location.search возвращает строку параметров запроса URI. Поэтому я могу просто проверить, существует ли он и добавить &foo=bar в конец URI, если это так, ?foo=bar, если это не так. Нет необходимости в синтаксическом анализе.

Кстати, это также отвечает на мой другой вопрос: location.pathname+location.search возвращает путь, включающий параметры запроса.

Это решение не будет работать для всех случаев, хотя оно работает на мое. Некоторые проблемы, которые могут возникнуть: если вы хотите изменить существующий параметр, необходим дополнительный синтаксический анализ. Или, если ваши параметры содержат такие символы, как ? или &, необходимо дополнительное экранирование. Более полное решение можно найти здесь: http://www.eggheadcafe.com/articles/20020107.asp

0

Простой способ получить имя пути, включая только параметры, - получить полный url сначала, используя location.href как var path = window.location.href, а затем разделить этот URL как (var pathQyeryPramater = path.split ("/") [3]) согласно вашему требованию. Этот pathQyeryPramater вернет весь путь только с параметрами запроса, а затем выполнит ответ выше.

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