【发布时间】:2016-11-23 22:45:21
【问题描述】:
我正在尝试使用 ajax 发布字典。但是我遇到了一些关于 json 和 "]" 字符的问题。
这是我的代码示例(javascript):
var dict = {"id":"patient","where":{"name[~]":"J"}};
$.post("./ajax.php",{data:dict},function(data){
});
还有 ajax.php(这个文件只处理 $_POST 数组中的 json 编码数据):
$where = $_POST["data"]["where"];
基本上我正在尝试将 json 格式的消息发送到 php,我想在那里处理数据。
我在 php 端尝试了与 json_encode 和 decode 的全部组合,在 javascript 端也尝试了 JSON.stringify(),尝试使用右括号的转义字符。
但是当我转储 $_POST["data]["where] 时,值 "J" 的键为 "name[~" 而不是 "name[~]"。右括号从键中消失。
请问有人给点建议吗? 感谢您的帮助,我已经为此苦苦挣扎了好几个小时...
//编辑:我发现,我在“]”之后放置的所有内容都会从键中消失。所以键从 "name[~]asdf" -> "name[~"...
【问题讨论】:
-
您尝试发送数据的方式,您将始终看到一个键值结果,我建议您将您的方法更改为
var dict = {"id":"patient","where":"name[~]:J"}};,然后在服务器端explode(':', $_POST["data"]["where"]); -
@sand 感谢您的回复。这是个好主意,但如果我想发送一个“:”字符作为值怎么办?还是更多?如果有“:”作为值,分隔符 : 将不起作用。示例
{"where":"name[~]:Jmkl:"}- 这将导致这种方法出错。我正在考虑最通用的方法。 -
@sand 这无助于找到原因,只是抹去了问题。 OP正在做某事。我用不同的变体测试了这段代码,OP是正确的。
标签: javascript php json ajax