Плагин Query String конвертирует + в% 2B - PullRequest
0 голосов
/ 07 февраля 2012

Используя этот плагин jquery: http://archive.plugins.jquery.com/project/query-object

Итак, у меня есть этот URL: results?search_query=alex+voievod, и мне нужно добавить &page=2, что я делаю с помощью упомянутого плагина.

Теперь проблема в том, что он преобразует + в %2B, и это влияет на мою страницу просмотра . Я попытался установить spaces: false, как сказано в документации (хотя spaces: VALUE не space)

Но он не будет работать, он добавляет параметр, но также меняет +, как упоминалось выше:

results?search_query=alex%2Bvoievod&page=2

Что мне не хватает?

пространство

Значение по умолчанию для этого истина, так как большинство людей предпочитают, чтобы знаки плюс в строках запроса были преобразованы в пробелы. Это стандарт практиковать использование знаков плюс для представления пробелов в строках запроса избегайте страшных% 20, чтобы анализатор был обновлен и по умолчанию преобразует знаки плюс в пробелы. Тем не менее, эта функция может быть отключена если вы решите, что вам нужны буквальные плюсы в строках запроса.

<script type="text/javascript"> $.query = { spaces: false }; </script>
<script src="<?=base_url();?>resources/js/libs/jquery.query.js"></script>

Внутри jquery.query.js:

new function(settings) { 
  // Various Settings
  var $separator = settings.separator || '&';
  var $spaces = settings.spaces === false ? false : true;
  alert($spaces);->Returns the value as set, true or false.
  var $suffix = settings.suffix === false ? '' : '[]';

Я немного прочитал код, но не могу найти, где находится ошибка, учитывая, что spaces не имеет никакого эффекта.

Edit: Код, который я использую с $.query

var cur_page = $.query.get('page');
if (cur_page.length == 0){var next_page = cur_page + 2;}
else { var next_page = cur_page + 1; }
var page = $.query.set('page', next_page).toString();
alert(page);
/*window.location.replace(page);*/

Я собираюсь попробовать связаться с создателем этого плагина: https://github.com/blairmitchelmore/jquery.plugins/blob/master/jquery.query.js

1 Ответ

0 голосов
/ 07 февраля 2012

Посмотрите на его исходный код, я вижу, что, если у вас есть + в строке запроса, тогда установите space в true, потому что он преобразует их в (пробел), а затем с помощью toString() преобразуетверните их к +.Попробуйте это.

$.query = { spaces: true };
$.query.toString();
...