1

我使用 jquery_form 插件将 html 表单发送到 php。然后 php 发回 JSON 对象。

这是 PHP 发回的内容

$content="<div>ABC</div>";
$json = json_encode(array("content" => $content));
...Here I also send $json to Mysql database...
echo $json;

然后我提醒什么返回到 Javascript。

现在在 Mysql 我收到{"content":"<div>ABC</div>"}看起来正确的

但是在 Javascript 中,警报看起来像这样{"content":"<div>ABC&lt;\/div&gt;"}</div>

这对 jQuery.parseJSON 解析这个对象造成了问题。

请帮我将普通的 JSON 传递给 javascript。

更新

我在这里测试了 php 文件http://codepad.viper-7.com/EBSM8G 把这段代码放在那里

<?php
   $content="<div>ABC</div>";
   $json = json_encode(array("content" => ".$content."));
   echo $json;

结果是这样的

{"content":".

ABC<\/div>."}

所以有什么问题 ????我很困惑 :(

更新 2 尝试建议的提示将一行更改为此

$json = json_encode(array("content" => $content,JSON_UNESCAPED_SLASHES));

警报给了我这个{"content":"<div>ABC&lt;\/div&gt;","0":64}</div>

4

4 回答 4

1

HTML

您不会看到开始的 div 标签,因为它正在被您的浏览器解析(它在那里但您看不到它 - 检查源代码)。您确实看到了结束标记,因为(没有额外的标志)斜杠被转义并且它没有被解析为结束 div 标记。您的浏览器可能会立即关闭 div 标签,从而为您提供换行符(div 是块元素)。

JS

Javascript 工作得很好 http://codepad.viper-7.com/inVZmv

此外,您不需要解析字符串,因为当您在 JavaScript 中使用它时它已经是 JSON(除非您在它周围加上引号)。考虑以下示例:http ://codepad.viper-7.com/SK5KaK

于 2012-12-08T12:24:15.167 回答
1

这现在可能对您没有帮助,但是我会重新考虑通过 json 发送 html,在我看来,如果您要发送大量页面,那么这样一个简单的 div 包装器是不必要的,它最终会变得非常混乱。

我会在页面上使用 php on page reload 直接在页面上构建 HTML,或者如果您使用的是 ajax,那么只需发送构建内容客户端所需的变量,这种松散耦合的方法将更加灵活

一个更具体的例子很棘手,因为您的原始帖子非常抽象和简洁,但是如果您的表单是姓名和年龄,我会发送 json 对象,例如

{'name':'codemonkey', 'age':21}

并使用 JS 在 jQuery 中填充 HTML,类似于

$('.theName').val( jsonData.name )
于 2012-12-08T13:14:35.127 回答
0

如果您要发送$content,为什么要使用数组?

尝试这个

   $json = json_encode($content); 
于 2012-12-08T17:56:41.863 回答
0

也许您可以尝试在 header() 函数中使用正确的编码。

像这样的东西: http: //codepad.viper-7.com/zZxzBd

于 2012-12-08T12:21:02.807 回答