如何将变量转换为json?

时间:2011-04-26 16:42:04

标签: javascript jquery json

我想将json数据发送到ajax,但是如何将变量转换为json或将数组转换为json?

$(".confirm_order").click(function(event) {
    event.preventDefault();

    var street = $("#street").val();
    var location = $("#location").val();
    var number = $("#number").val();

    var f = ???

            $.ajax({
            type: 'post',
            url: "/orders",
            dataType: "json",
            data: f,
            success: function (l) { 
                alert("Done");
            }
            });
});

6 个答案:

答案 0 :(得分:8)

如果您真的想将数据转换为JSON,则必须创建一个对象或数组并使用JSON.stringify(在较新的浏览器中可用,并且可以从here加载):

var f = JSON.stringify({street: street, location: location, number: number});

但您不能将data属性设置为f。您必须将其分配给另一个变量:

data: {data: f}

这将产生如下的POST参数:

data={"number":"value of number","location:...}

但是,没有理由在这里创建JSON。我会将值作为普通的帖子参数发送。为此,您只需创建一个上面的对象并将其分配给data

data: {street: street, location: location, number: number}

这将创建POST参数:

street=valueofstreet&location=valueoflocation&...

这样会更容易,因为您不必在服务器端解析JSON。

答案 1 :(得分:3)

如果要向服务器发送JSON格式的请求,可以为此请求指定正确的内容类型,然后使用JSON.stringify方法:

var street = $('#street').val();
var location = $('#location').val();
var number = $('#number').val();

$.ajax({
    type: 'post',
    url: '/orders',
    dataType: 'json',
    data: JSON.stringify({ street: street, location: location, number: number }),
    contentType: 'application/json; charset=utf-8',
    success: function (l) { 
        alert("Done");
    }
});

这将在POST正文中发送以下内容:

{ street: 'foo', location: 'bar', number: 'baz' }

显然,您发送此AJAX的服务器端脚本需要能够处理和解析JSON字符串。

答案 2 :(得分:1)

    var f = {}
    f['street'] = $("#street").val();
    f['location'] = $("#location").val();
    f['number'] = $("#number").val();

答案 3 :(得分:0)

var f = {
        "street": street,
        "location": location,
        "number": number
        };

答案 4 :(得分:0)

使用json2.js

中的JSON.stringify

不要忘记在配置对象中指定contentType: 'application/json'

答案 5 :(得分:0)

试试这个。值将分别替换

{street : street,location : location, number : number}