У меня есть следующий код javascript на стороне клиента.JSON кодирует строку с # и другими специальными символами
<html>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script>
$(document).ready(function() {
//var parameters = "a=" + JSON.stringify({ Code: "xyyyzz"});
var parameters = "a=" + JSON.stringify({ Code: "x#yyy#zz"});
alert(parameters);
$.getJSON('http://localhost:8080', parameters)
.done(function(str){
alert("success");
})
.fail(function(e) {
alert("failure");
});
});
</script>
</html>
и на следующий стороне сервера Node.js код
var http = require('http');
var URL = require('url');
var queryString = require("querystring");
handler = function(req, res) {
url = URL.parse(req.url);
var queryObj = queryString.parse(url.query);
var obj = JSON.parse(queryObj.a);
console.log(obj.Code);
};
host = '127.0.0.1';
port = 8080;
http.createServer(handler).listen(port, host);
console.log('Server running at http://' + host + ':' + port + '/');
Теперь, если я загрузить файл .html, вызов JSON сделан из JavaScript. Однако параметр не передается полностью. Он передается только до первого символа # и поэтому приводит к сбою сервера nodejs в функции разбора. Теперь, если я раскомментирую предыдущую строку в .js, где передается строка без #, сервер nodejs может успешно проанализировать параметры.
Итак, мой вопрос: не способен ли JSON кодировать специальные символы, такие как # в строке? Или это ошибка? Или мне нужно добавить что-нибудь еще, чтобы исправить это, чтобы x # yyy # zz передавался как целая строка на сервер nodejs?