【问题标题】:Load data from JSON or pure HTML?从 JSON 或纯 HTML 加载数据?
【发布时间】:2013-04-23 01:25:39
【问题描述】:

我正在使用 CodeIgniter 框架开发一个网站,并希望集成一些 AJAX 调用(使用 jQuery)。

该网站是关于赛马小费的(类似于足球小费,用户可以通过单击按钮提交小费)。我希望避免用户在提交小费时重新加载页面(如果没有 AJAX,他们将不得不一遍又一遍地重新加载页面)。

基本上我的想法是:(如果您有想法,请随时纠正我或给我更好的建议)

  1. 用户提交了他们的小费(比如第 1 场比赛)
  2. 表单已提交到服务器端 (PHP),它会检查所有内容。如果没问题,它会返回一个“OK”标志。
  3. 如果收到“OK”标志,它会向服务器请求 Race #1 的数据
  4. 服务器收到对 Race #1 数据的请求
  5. 使用 jQuery,它将 Race #1 数据填充到浏览器中。

我的问题是: 获取 JSON 数据并使用 javascript 将其填充到浏览器中会更好吗?还是最好请求服务器端(在这种情况下为 CodeIgniter)生成特定的 HTML,然后使用 AJAX 获取它并使用 javascript/jQuery 填充它(即:$("div#r1").html(fetched_data))?

我知道 JSON 数据将是轻量级的,但我必须使用 JavaScript 填充数据,这可能更容易或更难,具体取决于要求。

你对这个问题有什么看法?

【问题讨论】:

  • JSON,因为类似于MVC和CodeIgniter,你应该将逻辑与显示分开。为您的 JS 明确定义不同的部分,例如 ajax 请求及其显示方式,将使其更易于维护和测试。如果您想更好地了解这些约定,请查看 Backbone、Underscore 等 JS 库。它们提倡“MVC”JS 风格。
  • 为什么要在第 3 步中提出额外的请求?可以在第 2 步中与标志一起返回数据。也可以在 json 中嵌入 html....您的问题中未建议的另一个选项。

标签: jquery ajax json codeigniter


【解决方案1】:

用json,json更好。

在 php 中发送 html 不是一个好的选择。使用 json_encode() 从 php 返回您的数据。

编辑:

例如,你有一个这样的数组;

<?php
  $data = array(
    'races'=>array('race1'=>array('race','details','here'),'race2'),
    'horses' => array('horse1','horse2')
  );
?>

因此您必须为每个不同的数据设置 html 代码。但是,如果您使用 json 发送此数据,您可以从视图中解析它或包含 javascript,并将数组中的每个项目设置为一个对象,并直接在任何您想要的地方使用。

json 示例;

//Ajax proccess here
success:function(response){
  if(response.races){
    $.each(response.races, function(i,item)){
      var $race = $('<div></div>');
      $race.addClass('race');
      $race.html('<h3>'+item.racename+'<h3>');
      $race.appendTo('#races');
    }
  }
}

如您所见,您可以完全控制 json 对象。访问元素和创建新元素总是更容易处理。如果你没有使用过 json 对象;您将始终使用返回的 html 刷新所有数据。这就像因为忘记了“,”而从零开始写所有页面。

技术: php是服务器端,javascript是客户端。所以你不能在你的服务器上做所有的事情,这不是一个聪明的举动。

技术示例:

<?php
$data = getDataFromDB();
if(count($data) > 0) //Proccess: 1
{
  $html = ''; //Proccess 2
  foreach($data as $race) //Process 3
  {
    $html .= '<div class="race"><h3>'.$race->name.'</h3></div>';
  }

  if($html != '') //Proccess 4
  {
    echo $html;
  }
}
?>

但如果你只使用 json_encode 那就只有一个进程...

这就是为什么最好使用 ajax 处理 json 对象。

【讨论】:

  • 你能稍微解释一下你的答案吗?我想知道使用 JSON 的原因。
  • 这并不能真正回答原始问题。原始发布者知道有两种做事方式,并且显然希望人们对这个问题发表意见。他没有具体说答案必须包含“为什么”,但这是强烈暗示的。
  • 首先,不要在不需要的时候在php中使用html。其次,处理 json 数据比 php 中的纯 html 更容易。我正在用示例更新我的答案。
  • 从安全的角度来看,您认为处理 JSON 是否比其他方式更安全?我听说过使用 CSRF,但我不确定它是如何工作的。
  • Sending html in php is not a good choice.. 基于什么?工作正常,插入 html 比解析 json 更简单
猜你喜欢
  • 2012-08-20
  • 1970-01-01
  • 2016-09-12
  • 2017-05-19
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
相关资源
最近更新 更多