在PHP JSON响应中返回HTML

时间:2015-10-14 17:46:06

标签: php jquery html json templates

我正在构建一个应用程序以保存小笔记和评论。 该应用程序将要求您提交标题,它将为您提供文本的文本区域。

直到现在,当你提交标题时,我用jquery创建了一个标题 - 文本区域对,供你输入文字。

我想通过JSON返回这对,但有人告诉我这是不好的做法。

通过Jason返回HTML是不是很糟糕?为什么?

4 个答案:

答案 0 :(得分:1)

JSON(JavaScript Object Notation)是一种轻量级数据交换格式 http://www.json.org/

应该创建HTML DOM结构并使用JSON来交换数据。

一旦您检索到数据,创建动态dom元素就是合理的游戏。

答案 1 :(得分:1)

一些密切相关的问题:

Why is it a bad practice to return generated HTML instead of JSON? Or is it?

How dangerous is it send HTML in AJAX as opposed to sending JSON and building the HTML?

据我所知,在JSON对象中返回HTML字符串并不错。第二个问题的接受答案似乎同意:

  

请求并返回大型数据集的JSON,但包含(转义)   JSON记录中每条记录的HTML片段。这意味着更多   渲染时间和使用的带宽比(2)多,但可以减少   复制经常复杂的HTML渲染。

答案 2 :(得分:1)

JOSN旨在克服用于数据交换的庞大XML格式。 它实际上是詹姆斯描述的轻量级数据交换格式。 假设:您需要显示包含与产品相关的所有信息的动态产品列表。如果在JSON中返回完整的HTML,则其大小为2048个字符。但是,如果您只返回没有HTML标记的产品名称和已显示信息,则响应文本字符串大小将小于2048个字符,它只能是100个字符,因为您省略了不真正需要的HTML标记。 因此,您可以使用轻量级数据,然后使用客户端脚本将其插入HTML标记中。这将使您的应用程序更快,因为您必须等待更少的服务器响应,因为数据大小很小,并且传输少量数据(字符)总是比大数据(字符)更快。

XML包含大量标记,因此JSON被视为更快数据传输的替代方案。

答案 3 :(得分:1)

这实际上取决于您计划如何实施您的想法。正如你提到的JSON,我最好的猜测是你正在尝试实现AJAX。好吧,虽然几乎可以返回任何类型的编码为JSON对象的内容,但我不明白为什么你需要通过JSON从服务器发送像indirect enum ArithmeticExpression { case Number(Int) case Addition(ArithmeticExpression, ArithmeticExpression) case Multiplication(ArithmeticExpression, ArithmeticExpression) } func evaluate(expression: ArithmeticExpression) -> Int { switch expression { case .Number(let value): return value case .Addition(let left, let right): return evaluate(left) + evaluate(right) case .Multiplication(let left, let right): return evaluate(left) * evaluate(right) } } // evaluate (5 + 4) * 2 let five = ArithmeticExpression.Number(5) let four = ArithmeticExpression.Number(4) let sum = ArithmeticExpression.Addition(five, four) let product = ArithmeticExpression.Multiplication(sum, ArithmeticExpression.Number(2)) print(evaluate(product)) // prints "18" 这样的HTML元素。 AJAX用于发出服务器请求并且客户端想要获取响应但不刷新发送请求的页面的情况。最常见的用法是登录页面上的用户名和密码验证。

我认为您应该清楚地了解服务器端脚本和客户端脚本。您已使用text-area实现的内容称为客户端脚本,这正是应该如何完成的。至于从PHP获取数据,当您需要从驻留在服务器上的数据库中读取一些数据时就已经完成了。比如,仅当输入了在数据库中有条目的有效标题时,才会显示jquery。我在这里看不到任何要求。