我想将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");
}
});
});
答案 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)
答案 5 :(得分:0)
试试这个。值将分别替换
{street : street,location : location, number : number}