禁止关键字符ajax响应

时间:2010-08-27 01:58:29

标签: json

我正在动态创建一个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

Add to JSON without knowing its structure

3 个答案:

答案 0 :(得分:2)

您的页面编码可能不匹配,这意味着响应可能带有一些无效字符,例如:

ÿ¬{"Result":"A"}

您需要确保您发布的编码与另一侧的编码匹配。

答案 1 :(得分:2)

  

我刚刚意识到我的密钥中有空格

是的...您要连接的站点可能正在运行CodeIgniter。

CI有一些愚蠢的输入“清理”功能,它会故意拒绝所有带有空格的表格参数(或除了字母数字和.-/:之外的任何其他内容)。

答案 2 :(得分:0)

事实证明,此错误是由CI的输入库引起的。在第215行,你会发现_clean_input_keys函数,它使用preg_match()来禁止你的键中的某些字符。因此,当您发送JSON并且php将其作为数组接收时,它可能会抛出错误。

要解决此问题,您可以扩展库或编辑CI核心。