1

我正在使用 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 填充数据,这取决于要求可能更容易或更难。

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

4

1 回答 1

0

用json,json更好。

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

编辑 :

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

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

于 2013-04-23T01:40:15.783 回答