Получить весь запрос с URL - PullRequest
       15

Получить весь запрос с URL

1 голос
/ 23 августа 2011

У меня есть проблема, чтобы получить весь запрос из URL, используя функцию toQueryParams из framework Protoypejs, например:

var a = "http://anypage.com?a=lol&b=lal&c=laoa?&d=fehw#lalalalalSomeAnchor";

a.toQueryParams();

>> {d: 'fehw'}

what i want to get:

>> {a: 'lol', b: 'lal', c: 'loaa?', d: 'fehw'}

Я знаю, что URL является недействительным, но я хочу предварительно обработать этот URL, чтобы избежать егозначения, прежде чем я отправил его на сервер.

Я пытался изменить регулярное выражение функции, чтобы соответствовать только символы между первым?и последнее #, у меня уже есть одно выражение /(\?.*#)/, которое будет работать для меня, но я даже хочу исключить?и #, я надеюсь, что кто-то из вас может мне помочь:)

кстати.нижеприведенная страница полезна для создания регулярных выражений в режиме реального времени: P http://regexpal.com/

Обновление : спасибо DaveRandom :) для тех, кто хочет исправить это непосредственно во фреймворке, замените следующую строку на:

L625: var match = this.strip().match(/\?([^#]*)/); // (/([^?#]*)(#.*)?$/); default

Ответы [ 3 ]

1 голос
/ 23 августа 2011

Как насчет этого ... /\?([^#]*)/?

Вам не нужно беспокоиться о совпадении до «последнего» * ​​1004 *, потому что якорь начинается с первого #, поэтому дажеесли в строке более одного #, то после первого вхождения ничего не является частью строки запроса.

0 голосов
/ 23 августа 2011

Вот, это работает .... Я просто взял все между первым ? и последним #, конкатенировал и запустил на него QueryParams.Может быть, этого достаточно?

http://jsfiddle.net/cQYV7/1/

edit Также заменены все ?& на ?, поэтому все параметры совпадают ...

0 голосов
/ 23 августа 2011

Пользователь /\?([^#]*)/, как ответил DaveRandom, и не забудьте URL Кодировать переменные.Используйте encodeURIComponent("value"); перед добавлением его в ваш URL...Не может быть два ? в вашем URL.

...