来自PHP的JSON单引号导致问题

时间:2011-06-11 04:05:17

标签: php jquery json cross-domain str-replace

注意: 这是一个完全不同的问题,直到我意识到问题的真正原因。

我目前的问题是我试图从PHP输出一些JSON供jQuery使用。我正在做这个跨域,所以我使用“JSONP”。我已经将问题缩小到我的JSON中有单引号的事实,所以当我使用回调函数输出时,我最终得到太多的单引号。
我尝试在PHP中调用str_replace("'","\'",$value),它似乎在我的JSON中输出为\\'而不是\',这显然是jQuery无法读取的(尽管在线JSON验证器说JSON是有效的。

所以我需要知道的是如何在我的字符串中只获得一个斜杠而不是2个斜杠。

2 个答案:

答案 0 :(得分:1)

我正在收集的是:

jQuery使用_作为JSONP请求的回调参数。它会自动附加?_=jQuery<random_numbers>,基本上告诉服务器在返回时调用这个唯一的函数名。因此,截至最近(在我想说的去年).ajax负责为您创建回调函数,然后将其“重新路由”到您在{{1}中指定的函数属性。

此外,您的PHP代码正在使用success,现在它应该使用$_GET['callback'](以便更好地与jQuery和它发送的内容保持一致)。

“jQuery未被调用”只是jQuery通知你预期的回调没有包含在响应中,并且它正在寻求确保它被调用。

简短回答(我认为)引用$_GET['_']而不是$_GET['_']来满足jQuery。

答案 1 :(得分:0)

尝试在PHP中使用它:

echo $_GET['callback'] . '(' . json_encode($your_array_data) . ')';

问候。