我已经在Symfony2中设置了一个文章包,一切都运行良好,但我尝试使用AJAX和Json来浏览帖子,我想要的迭代就是这个:
Index page loads random post (this is done without ajax)
There are two buttons, previous and next. (this is working without ajax, controller gets postId and do +-1 to navigate through DB)
我实际上不知道如何使用AJAX和JSON来进行迭代dinamycaly而不刷新页面,获取我的控制器JSON数据并解析到我的twig模板......
这是我的树枝模板......
{% extends '::base.html.twig' %} {% block container %}
<div class="flecha flecha-left">{{ icon('chevron-left') }}</div>
<div class="flecha flecha-right">{{ icon('chevron-right') }}</div>
<div id="dilema" class="row">
<div id="dilor"></div>
<div class="col-md-6 column">
<div class="choice bluechoice">
<div class="opcion">{{ decision.opcionAzul }}</div>
</div>
</div>
<div class="col-md-6 column">
<div class="choice redchoice">
<div class="opcion">{{ decision.opcionRoja }}</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-3 column">
<p>{{ icon('stats') }} {{ decision.votosAzul + decision.votosRoja }}
votos</p>
<p>{{ icon('calendar') }} {{ decision.createdAt|date }}</p>
</div>
<div class="col-md-9 column">
<p>{{ icon('bullhorn')}} {{ decision.descripcion }}</p>
</div>
</div>
{% endblock container %} {% block left_column %} Comment count:
<div id="fos_comment_thread" data-thread="{{ thread.id }}">{% include
'FOSCommentBundle:Thread:comments.html.twig' with { 'comments': comments,
'thread': thread } %}</div>
{% block javascript %} {% javascripts
'@FOSCommentBundle/Resources/assets/js/comments.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %} {% endblock javascript %} {% endblock left_column %}
{% block javas %}
{% endblock javas %}
所以重点是点击div#flecha
图标并使用Ajax导航,获取下一个或上一个ID的JSON数据,并用新的替换{{ decision }}
选项(这是我的实体结果)检索到JSON数据...另外,正如您所看到的,我使用FOSCommentBundle,但这可以通过Controller处理,我在其中将注释thread_id设置为当前实体ID ...
答案 0 :(得分:0)
简单的答案是:您的twig - 模板将仅在页面刷新时进行解析。 它位于服务器端执行环境中。 但你可以通过ajax检索完整的请求(如html), 然后通过JS DOM API(我不推荐)替换页面上的节点。 如果您只想显示JSON - Data,您还必须自己通过JS操作DOM树,但这或多或少是部分页面呈现的完成方式。 早期的方法是&lt; esi ...&gt;虽然受到Varnish的支持,但它们还没有达到HTML标准。
答案 1 :(得分:0)
/**Simplest form of retrieving JSON**/
class HelloController
{
public function indexAction($name)
{
$response = new Response();
$response->setContent(json_encode(array(
'data' => 123,
)));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
jQuery Ajax:
var response = $ .ajax({url:http://your.host/hello.php};
----带jQuery的DOM:
var dilema = $('#dilema'); //找到dom节点
dilema.html( ''); //清除内部html
Var div = $(''); //创建新的一个
dilema.append(DIV); //将它插入到dom树中。