4

刚从 Symfony2 开始,在成为一名长期的 ZF1 开发人员之后真的很喜欢它。

今晚开始向网站添加一些 Ajax 功能,对以下内容有点困惑。

在我的 ajax 调用中,例如:

$.ajax({
    url: '/app_dev.php/ajax/urlgetter',
    data: "url="+urlinput,
    dataType: 'html',
    timeout: 5000,
    success: function(data, status){
         // DO Stuff here
    }
});

我必须将 /app_dev.php 添加到 url 以使其在开发环境中工作。没有更好的方法吗?这是否意味着当我将项目更改为生产环境时,我需要搜索和替换 /app_dev.php 的所有实例?希望我完全错过了一些简单的事情。

4

3 回答 3

4

我最终使用了 jsrouting-bundle

安装后,我可以简单地执行以下操作:

$.ajax({
     url: Routing.generate('urlgetter'),
    data: "url="+urlinput,
    dataType: 'html',
    timeout: 5000,
    success: function(data, status){
     // DO Stuff here
    }
});

其中 urlgetter 是在 routing.yml 中定义的路由,例如:

urlgetter:
    pattern: /ajax/urlgetter
    defaults: { _controller: MyAjaxBundle:SomeController:urlgetter }
    options:
        expose: true

注意要使用 jsrouting-bundle 的路由必须设置 Expose: true 选项

于 2013-04-24T20:29:34.950 回答
3

我想这个问题已经有点老了,但我遇到了同样的问题。

它不是任何“最佳实践”解决方案,但这就是我所做的。

twig你可以完美地使用这个{{ path('yourRouteName') }}东西。所以在我的twig文件中,我有一个这样的结构:

...    
<a href="{{ path('myRoute') }}"> //results in e.g http://localhost/app_dev.php/myRoute
    <div id="clickMe">Click</div>
</a>

现在,如果有人点击 div,我会在我的.js file:

$('#clickMe').on('click', function(event) {
    event.preventDefault(); //prevents the default a href behaviour
    var url = $(this).closest('a').attr('href');
    $.ajax({
       url: url,
       method: 'POST',
       success: function(data) {
           console.log('GENIUS!');
      }  
    });
});

我知道这不是针对您想要触发 Ajax 请求的所有情况的解决方案,但我只是将其留在这里,也许有人认为它很有用:)

于 2013-04-17T06:53:13.583 回答
1

由于这个 jQuery ajax 函数放置在 twig 端并且 url 指向您的应用程序,因此您可以插入路由路径

$.ajax({
    url: '{{ path("your_ajax_routing") }}',
    data: "url="+urlinput,
    dataType: 'html',
    timeout: 5000,
    success: function(data, status){
         // DO Stuff here
    }
});
于 2013-02-09T23:40:08.157 回答