我有一个 javascript 对象,声明如下:
var myObject = {"a":{"b": "c", "d": "e"}, "f":{"g":{}, "h":{}}};
我正在使用 jQuery
$.post(url, myObject, function(){});
将数据发送到我的 php 文件。由于某种原因,空属性没有被传递,因此,由于“g”和“h”为空,甚至“f”也没有在帖子中传递。
有什么方法可以包含它们而不用虚假数据填充它吗?
谢谢
最佳答案
我认为你的问题不在于 JavaScript。当你像这样调用“$.post()”时,你的对象将被转换成一个HTTP查询形式,相当于“$.param”:
var params = $.param({"a":{"b": "c", "d": "e"}, "f":{"g":{}, "h":{}}});
该字符串看起来像:
a%5Bb%5D=c&a%5Bd%5D=e&f%5Bg%5D=&f%5Bh%5D=
解码后是:
<小时/>a[b]=c&a[d]=e&f[g]=&f[h]=
编辑——这很奇怪。在内部,jQuery 确实按照我上面写的那样设置参数,但无论出于何种原因 Firefox 正在删除空参数。如果我添加一个“beforeSend”处理程序,很明显参数都在那里,有值的也有没有值的。然而,当实际的 HTTP 请求发出时,它们就消失了。
如果您不介意参数以这种方式传输,您可以将参数附加到 URL。
关于ajax - Javascript (jQuery) 发布到 PHP,未解析空属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258977/