我有一个奇怪的问题。我正在使用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请求都会发生同样的事情。有没有人经历过类似的事情,或者知道如何解决这个问题?谢谢!
答案 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。希望这有助于某人。