我正在动态创建一个JSON对象,当我通过ajax POST发送它时,我得到了Disallowed Key Characters作为响应。我知道我的对象没问题,因为我可以手动创建SAME EXACT对象并且发送正常。我在将所有字符串添加到obj之前尝试了escape()
,但这也没有用。
我错过了什么吗?
这是我的帖子
$.ajax({
type: 'POST',
url: 'http://localhost/test',
data: obj,
dataType : 'JSON',
success: function(){
console.log('nice');
}
});
我使用与此帖中相同的obj
答案 0 :(得分:2)
您的页面编码可能不匹配,这意味着响应可能带有一些无效字符,例如:
ÿ¬{"Result":"A"}
您需要确保您发布的编码与另一侧的编码匹配。
答案 1 :(得分:2)
我刚刚意识到我的密钥中有空格
是的...您要连接的站点可能正在运行CodeIgniter。
CI有一些愚蠢的输入“清理”功能,它会故意拒绝所有带有空格的表格参数(或除了字母数字和.-/:
之外的任何其他内容)。
答案 2 :(得分:0)
事实证明,此错误是由CI的输入库引起的。在第215行,你会发现_clean_input_keys函数,它使用preg_match()来禁止你的键中的某些字符。因此,当您发送JSON并且php将其作为数组接收时,它可能会抛出错误。
要解决此问题,您可以扩展库或编辑CI核心。