Javascript 如何将变量转换为json?

Javascript 如何将变量转换为json?,javascript,jquery,json,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 = ???

我想将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");
            }
            });
});

如果要向服务器发送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");
    }
});
这将在邮件正文中发送以下内容:

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

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

使用
JSON.stringify
from


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

试试这个。值将分别替换


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

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

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

data: {data: f}
这将产生如下POST参数:

data={"number":"value of number","location:...}
但是,没有理由在这里创建JSON。我会将这些值作为正常的post参数发送。为此,您只需创建一个如上所述的对象,并将其分配给
data

data: {street: street, location: location, number: number}
这将创建POST参数:

street=valueofstreet&location=valueoflocation&...

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

谢谢,addresss块怎么样?这怎么可能。。。将addresss block和order block类似于f variable?默认情况下,jQuery将其编码为application/x-www-form-urlencoded而不是application/json数据。@user622378:您可以在f variable中添加另一个键来存储值,该值可以是类似于f
var add={}的对象;添加['street']='street';f['地址]]=添加
默认情况下,jQuery将其编码为application/x-www-form-urlencoded not application/json数据。默认情况下,jQuery将其编码为application/x-www-form-urlencoded not application/json数据。只有最近的浏览器才提供json对象。如果你这样做的话,你真的应该包括一个为稍旧的浏览器提供一个库的库。@David Dorward,这是正确的,需要指出的一点很重要。
data={"number":"value of number","location:...}
data: {street: street, location: location, number: number}
street=valueofstreet&location=valueoflocation&...