使用变量时无效的JSON基元

时间:2011-07-08 19:45:50

标签: javascript jquery json

我有代码对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对象?

6 个答案:

答案 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
}