jQuery ajax头解析问题

时间:2011-07-18 20:18:26

标签: json jquery

所以我正在用这样的jQuery Ajax做GET

$.ajax({
   //...
   headers: {'a':{'t':'text'}, 'b': {'s':'text2'}}
   //...
});

根据(我对的解释)jQuery文档,标题应该以

的形式出现
a: {'t':'text'}
b: {'s':'text2'}

相反,在萤火虫(和Fiddler)上,我看到了:

a: [object Object]  
b: [object Object]

现在如果我这样传递它:

$.ajax({
   //...
   headers: {'a':JSON.stringify({t:'text'}), 'b': JSON.stringify({'s':'text2'})}
   //...
});
萤火虫将它们显示为:

a: {'t':'text'}
b: {'s':'text2'}

JSON.stringify来自Douglas Crockford的library

我讨厌第二种方法的部分是现在我需要循环访问我的对象和stringify子对象。 (注意,我不知道对象里面有什么,所以我不能做个人setHeader()

我的问题是:我的理解是不正确的headers是如何被解析的,还是我忽略了什么?

此外,我正在寻找社区的有效循环通过JSON对象和stringify孩子们的输入。

更新:很明显,我最初的理解是错误的。

无论如何,有关如何有效地遍历对象和JSON.stringify儿童 的任何输入

2 个答案:

答案 0 :(得分:0)

您的初步理解不正确。 HTTP标头是字符串,例如:

X-Some-Header: Some Value

,因此,您必须提供一个字符串作为名称,一个作为值。您对最顶层对象的子项进行字符串化的更正版本提供了这样的字符串名称/字符串值结构。

答案 1 :(得分:0)

我认为您正在尝试使用JSON对象作为标头值,但在这种情况下您需要将其作为字符串发送:

$.ajax({
   //...
   headers: {'a': "{'t':'text'}", 'b': "{'s':'text2'}"}
   //...
});