我有代码对MVC控制器方法进行AJAX调用,如果我这样做,它将毫无障碍地工作:
var obj = '{"titlename":"whatever"}';
$.ajax({
type: "POST",
url: "/Titles/Yo",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: obj,
success: function (result) {
$("#title_field").html(result.TitleName);
}
});
但如果我这样做:
var stringed="whatever"
var obj = '{"titlename":stringed}';
$.ajax({
type: "POST",
url: "/Titles/Yo",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: obj,
success: function (result) {
$("#title_field").html(result.TitleName);
}
});
我用“无效的JSON原语”错误来解决这个错误。我一直在尝试各种单引号和双引号排列,但它们都一直给我同样的错误。如何将字符串变量插入JSON对象?
答案 0 :(得分:2)
试试这个:
var stringed = "whatever";
var obj = '{"titlename": "' + stringed + '"}';
另外,您可能需要查看一个JSON2库,它可以自动对您的数据进行字符串化。
答案 1 :(得分:1)
为什么要将对象声明为String?
你有没有尝试过:
var stringed="whatever";
var obj = {
"titlename":stringed
};
答案 2 :(得分:1)
试试这个:
var stringed="whatever";
var obj = {"titlename": stringed};
$.ajax({
type: "POST",
url: "/Titles/Yo",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: obj,
success: function (result) {
$("#title_field").html(result.TitleName);
}
});
你所拥有的只是一个包含字符串“stringed”的字符串,你需要一个对象文字。
jQuery可以接受一个对象,它会负责将json字符串发送到服务器。
答案 3 :(得分:1)
var obj = {"titlename":stringed};
这可能就是你所需要的。
答案 4 :(得分:1)
你应该这样做:
var stringed="whatever";
var obj_as_object = {titlename: stringed};
var obj_as_string = JSON.stringify(obj_as_object);
...
data: obj_as_string //This goes in your ajax call
有了这个,我们用JSON自动编码obj。
JSON.stringify
可以在现代浏览器中使用。如果您希望支持较旧的浏览器(例如,IE6),则应使用http://json.org中的json2等库。
希望这会有所帮助。干杯
答案 5 :(得分:0)
这不是一个好方法,但是......
var stringed="whatever"
var obj = '{"titlename":'+stringed+'}';
或
var obj = {
"titlename":stringed
}