JSON.stringify没有对对象进行序列化

时间:2013-12-16 10:41:17

标签: javascript json

我试图通过传递序列化的json对象并将其分配给ajax调用的data属性来进行ajax调用。 但有些事情不适合将序列化对象分配给数据属性控制转到jquery-2.0.3.min.js文件

<script type="text/javascript">
    function AddEmployee() 
    {


        var Product = new Object();
        Product.Name = "kRISH";
        Product.Price = "23";
        Product.Category = "AS";

        $.ajax
        ({
            url: 'http://localhost:62310/api/products',
            type: 'POST',
            data: JSON.stringify(Product),
            contentType: "application/json;charset=utf-8",
            success: function (data){ WriteResponse(data);},
            error: function (x, y, z){ alert(x + '\n' + y + '\n' + z);}
        });
    }
</script>

3 个答案:

答案 0 :(得分:1)

要么使用属性Product序列化对象,则需要

data: JSON.stringify( {Product : Product} )

或者您只想序列化您的产品,然后您需要

data: JSON.stringify(Product)

btw你的对象初始化可以改写为:

var Product = {
  Name : "kRISH",
  Price : "23",
  Category : "AS"
};

答案 1 :(得分:1)

Product : Product不是对象。

您应该将其替换为实际对象:

$.ajax
    ({
        url: 'http://localhost:62310/api/products',
        type: 'POST',
        data: JSON.stringify({Product : Product}),
        contentType: "application/json;charset=utf-8",
        success: function (data){ WriteResponse(data);},
        error: function (x, y, z){ alert(x + '\n' + y + '\n' + z);}
    });

http://jsfiddle.net/floo51/x52GX/

答案 2 :(得分:0)

只做

var json_text = JSON.stringify(Product, null, 2);

 $.ajax
        ({
            url: 'http://localhost:62310/api/products',
            type: 'POST',
            data: json_text ,
            contentType: "application/json;charset=utf-8",
            success: function (data){ WriteResponse(data);},
            error: function (x, y, z){ alert(x + '\n' + y + '\n' + z);}
        });