从JSON或纯HTML加载数据?

时间:2013-04-23 01:25:39

标签: jquery ajax json codeigniter

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

该网站是关于赛马小费(类似于小脚小费,用户可以通过点击按钮提交小费)。我喜欢避免用户在提交小费时重新加载页面的需要(没有AJAX,他们将不得不一遍又一遍地重新加载页面)。

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

  1. 用户提交他们的小费(比方说比赛#1)
  2. 表单提交到服务器端(PHP),它会检查所有内容。如果没问题,则返回“OK”标志。
  3. 如果收到“OK”标志,则从服务器
  4. 请求Race#1的数据
  5. 服务器收到Race#1数据的请求
  6. 使用jQuery,它将Race#1数据填充到浏览器中。
  7. 我的问题是:使用javascript获取JSON数据并将其填充到浏览器中是否更好?或者更好的是请求服务器端(在本例中为CodeIgniter)生成特定的HTML,然后使用AJAX获取它并使用javascript / jQuery填充它(即:$("div#r1").html(fetched_data))?

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

    您对此问题有何看法?

1 个答案:

答案 0 :(得分:0)

和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对象。