0

我有一个基于 CI 和 jQuery 的项目。我有一个网站搜索我的数据库。它由一个 jQueryUI 手风琴组成。一个部分包含用于高级搜索的输入字段,另一部分用于显示带有结果的 html 表格。

第一部分的搜索参数使用 ajax post 发送到服务器。这由服务器处理,然后返回 html 样式的错误消息或带有结果的 html 表(以及后来的一些其他内容,例如找到多少结果、消耗了多少时间等)。

回到客户端 jQuery 必须能够区分这两者。最好是能够传输另一个变量“search_success”。如果 'search_success' 为 false,则错误将附加到输入字段上方的第一部分。否则 html 块显示在第二部分,jQuery 打开第二部分。

现在我正在返回带有 0 或 1 的普通 html。第一个字符被 jQuery 截断,用于区分两种可能的结果。这有点丑。

在阅读了这篇关于使用 json 发送数组的帖子后,我想到了在 json 中解决这个问题。我打算建立类似的东西

echo json_encode(array('search_success' => $search_success, 'html' => $html));

这将允许数据的良好结构。现在的问题是,我的 'html' 不是一个简单的 php 变量,而是一个视图:

<?php 
$template = array('table_open' => '<table id="table" data-url="'.base_url().'">');
$this->table->set_template($template);
$this->table->set_heading($table_header);
echo $this->table->generate($table);
?>

这种观点也可能变得更加复杂。当然,我可以放弃 CI MVC 并将整个 html 存储在一个 php 字符串中,我可以使用上面的代码将其转换为 json。但是,这会破坏将整个 html 部分存储在视图中的目的。

有没有办法在不放弃我的视图架构的情况下将我的整个视图包装在 json 中?或者什么方法更适合这个问题?

谢谢, 奇异果

4

1 回答 1

0

为了结束这个话题,答案很简单:

$json['html'] = $this->load->view('myfile', '', true); // 3. param 'true'!
$json['other_stuff'] = $other stuff;
echo json_encode($json);

最后看到这里。这种方法允许对服务器进行结构良好的响应。

所有功劳归功于@koala_dev!

于 2013-10-10T14:36:32.110 回答