// 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");
escape не для кодирования URL. Делает что-то похожее, но другое. Вы хотите encodeURIComponent ( ссылка ). Вам также нужны кавычки вокруг значения query var (первая строка ниже):
escape
encodeURIComponent
query
var query="1+2"; var url = 'http://www.wolframalpha.com/input/?i='; var searchUrl = url + encodeURIComponent(query); window.open(searchUrl, form.target || "_blank");
Живой пример
encodeURIComponent будет правильно кодировать +.
+
Я думаю, что ваша проблема var query=1+2;, она не обрабатывает query как строку, поэтому replace не является функцией, которая может быть вызвана в режиме query=query.replace("+","%2B");
var query=1+2;
replace
query=query.replace("+","%2B");
Это должно быть var query='1+2';
var query='1+2';