将JSON发送到服务器

时间:2011-01-22 18:57:46

标签: javascript ajax json

我该怎么转......

{ 
  'name': 'John', 
  'surname': 'Smith'
}

......进入这个?

name=John&surname=Smith

我正在尝试通过AJAX将JSON发送到服务器

谢谢

4 个答案:

答案 0 :(得分:2)

一般(即没有任何JS框架)......

var o = {'name': 'John', 'surname': 'Smith'};
var q = [];

for (p in o) {
  if (o.hasOwnProperty(p)) {
    q.push( encodeURIComponent(p) + "=" + encodeURIComponent(o[p]) );
  }
}

q = q.join("&"); // "name=John&surname=Smith"

正如评论中的人已经指出的那样,这仅适用于扁平的非嵌套对象。对于高级用途,我强烈建议执行HTTP post操作并将未修改的对象作为JSON字符串发送。

所有JS库都提供了一种将对象转换为JSON的方法,还有其他方法可以序列化对象,例如Douglas Crockford自己在http://json.org/js.html的实现。

答案 1 :(得分:0)

var jsoncode = { 
  'name': 'John',
  'surname': 'Smith'
};
var querystring = 'name=' + encodeURI(jsoncode.name) + '&surname=' + encodeURI(jsoncode.surname);

答案 2 :(得分:0)

有很多方法可以做到这一点,但最简单的方法是为对象编写一个迭代器:

var propstr = "?";
for (prop in jsonCode) {
   if (jsonCode.hasOwnProperty(prop)) {
      propstr += prop + "=" + jsonCode[prop] + "&"
   }
}

答案 3 :(得分:0)

首先,您使用的是任何JavaScript库吗? (jquery,原型等......)。如果你在那里有某些功能可以做到这一点。

否则你可以使用类似的东西:

var urlParams = '?';
var index = 0;
for(var key in obj){
If(index != 0) urlParams += '&';
 urlParams += key + '='+obj[key];
}
相关问题