如何将变量转换为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"); } }); }); 

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

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

但是你不能只将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。

如果要将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字符串。

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

使用JSON.stringify的JSON.stringify

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

试试这个。 值将分别替换

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