Как санировать знак «+» в URL перед поиском? - PullRequest
0 голосов
/ 05 февраля 2011
// Description: I try to search Wolframalpha.com with JS search
// but I get an odd action with "+" sign, apparently because "+" is
// not just to sum things. Here an example:

var query=1+2;

// WA interpretes "+" to "%2B" after the execution
// but when I try to replace "+" with "%2B"
// WA replaces "%2B" with %225B"
// So replacing this way may end up into some odd loop
//
// How should I replace "+"/sanitize correctly?
// Or am I do it the wrong way? How to search WA in JS?

query=query.replace("+","%2B");


var url = 'http://www.wolframalpha.com/input/?i=';
var searchUrl = url + escape(query);
window.open(searchUrl, form.target || "_blank");

Ответы [ 2 ]

3 голосов
/ 05 февраля 2011

escape не для кодирования URL. Делает что-то похожее, но другое. Вы хотите encodeURIComponent ( ссылка ). Вам также нужны кавычки вокруг значения query var (первая строка ниже):

var query="1+2";

var url = 'http://www.wolframalpha.com/input/?i=';
var searchUrl = url + encodeURIComponent(query);
window.open(searchUrl, form.target || "_blank");

Живой пример

encodeURIComponent будет правильно кодировать +.

0 голосов
/ 05 февраля 2011

Я думаю, что ваша проблема var query=1+2;, она не обрабатывает query как строку, поэтому replace не является функцией, которая может быть вызвана в режиме query=query.replace("+","%2B");

Это должно быть var query='1+2';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...