我正在尝试将我的json代码字符串化,以便将其发送到MVC控制器。 但是当数据包含一些特殊字符(如大于>)时,它不起作用。或者不到标志<。
以下是示例代码
function demo()
{
debugger
var demo = [];
demo.one = 'one';
demo.two = '<just>'
var treeBinding = JSON.stringify(demo);
$.ajax({
url: '/flow/demo',
type: "GET",
data: { dd: treeBinding },
success: function (res) {
},
error: function (error) {
alert(error)
}
});
}
在这种情况下,JSON.stringify返回一个空数组。 任何人都可以帮我搞定吗?
答案 0 :(得分:3)
首先你的数组声明是不正确的。这应该是一个对象,但无论如何你需要检查对象和数组之间的区别。但是我假设demo是一个具有两个键/属性的对象将被发送到服务器。
所以声明应该是这样的 -
var demo = {};
demo.one = 'one';
demo.two = '<just>';
然后你应该用来逃避 -
var treeBinding = encodeURIComponent(JSON.stringify(demo));
答案 1 :(得分:0)
您可以尝试这样的事情:
function arrayToObjectString(arr) {
var returnSrt = "{";
for (var key in arr) {
returnSrt += "\"" + key + "\" : \"" + arr[key] + "\"";
returnSrt += ","
}
returnSrt = returnSrt.substring(0, returnSrt.length - 1) + "}";
return returnSrt;
}
function main() {
var demo = [];
demo.one = 'one';
demo.two = '<just>'
console.log(JSON.stringify(demo))
var resultStr = arrayToObjectString(demo);
console.log(resultStr)
console.log(JSON.parse(resultStr));
}
main();