symfony2 assetic导致ajax调用失败

时间:2014-05-29 07:26:27

标签: ajax angularjs symfony assetic

我有一个奇怪的问题。我正在使用uglifyjs过滤器在我的Symfony2应用程序中实现资产。如果我将我的javascript文件保留为单独的<script>条目,一切正常。但是一旦我尝试使用assetic来组合几个javascript文件,我的应用程序中的AJAX调用就会失败。 AJAX请求被触发,但响应是我的登录表单而不是我的JSON数据。我不明白因为我在提出请求时已经登录了。

以下是我如何包含我的JS文件:

{% javascripts  'bundles/fosjsrouting/js/router.js'
    'js/fos_js_routes.js'
    '@MyCoreBundle/Resources/public/js/page/extra/spSettings.js'
    '@MyCoreBundle/Resources/public/js/vendor/spin.js'
    '@MyCoreBundle/Resources/public/js/lib/angular-spinner.js'
    '@MyCoreBundle/Resources/public/js/lib/loading.js'
    '@MyCoreBundle/Resources/public/js/lib/notification.js'
    '@MyCoreBundle/Resources/public/js/page/sp_settings.js'
    filter='?uglifyjs2' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}

如果我在/ web目录中包含所有这些JS文件并使用asset() twig函数引用它们,那么它的作用是什么。如果它有所作为,我使用AngularJS来进行AJAX调用。我也在使用FOSJSRoutingBundle在我的js文件中生成路由(虽然看起来路由生成正常)。

页面上的所有AJAX请求都会发生同样的事情。有没有人经历过类似的事情,或者知道如何解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:1)

如何从浏览器执行AJAX网址?它会将您重定向到登录表单吗?

我的第一个猜测是,当您发起AJAX来电时,Cookie不会被发送过来。请查看PHPSESSID cookie的以下方案:

  • 您确实有效PHPSESSID并且拥有权限=&gt;好的
  • 您确实有效PHPSESSID且没有权限=&gt; HTTP403 Forbidden
  • 您没有有效PHPSESSID =&gt; HTTP 302重定向到登录表单

所以,基本上,我怀疑PHPSESSID没有被发送。你能通过Firebug验证这个吗?

只是澄清一下:“活跃PHPSESSID”我实际上是指“带有凭据限制的活动会话”;)

答案 1 :(得分:0)

对于可能遇到此问题的其他任何人......这就是我访问服务器上的生产环境的方式。我的.htaccess文件被配置为默认加载app_dev.php,因此每当我想在prod环境中进行测试时,我只需通过转到http://mysite.dev/app.php手动访问它,这就是问题所在。通过执行此操作,我的ajax请求仍然使用http://mysite.dev触发,因此它们仍然默认为app_dev.php。

所以@jperovic是对的,app.php的PHPSESSID没有被发送。相反,正在发送app_dev.php的PHPSESSID。希望这有助于某人。