gpt4 book ai didi

php - Ajax 操作 URL 不起作用 + Symfony2

转载 作者:行者123 更新时间:2023-12-01 01:55:15 24 4
gpt4 key购买 nike

我想使用 jquery 自动完成功能进行 ajax 调用,如下所示:

$("#register_player_team").autocomplete({
source: function( request, response ) {
$.ajax({
url: "{{path('volley_scout_getteams_data')}}",
dataType: "jsonp",
success: function( data ) {
console.log(data);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(thrownError);
}
});
}
});

在我的routing.yml中,我定义了以下路由:

volley_scout_getteams_data:
pattern: /team/getteams
defaults: { _controller: VolleyScoutBundle:Team:getteams }

在我的 TeamController 中,我有一个名为 getteamsAction() 的操作:

public function getteamsAction()
{
$entityManager = $this->getDoctrine()->getManager();
// Get teams from database
$teams = $entityManager->getRepository('VolleyScoutBundle:Teams')->findAll();

foreach($teams as $team){
var_dump($team);
}

die();
}

(dump和die()只是为了测试,我想检查他是否能找到链接)。但是当我想进行 ajax 调用时,我总是收到以下错误:

http://localhost:8080/volleyscout/web/app_dev.php/user/%7B%7Bpath('volley_s…)%7D%7D?callback=jQuery110207641139030456543_1389372448462&_=1389372448463 404 (Not Found) 

出于某种原因,他找不到该操作...有人知道我做错了什么吗?当我尝试这样的链接时: web/app_dev.php/team/getteams 我得到了团队的转储..

更新:我的 javascript 链接在基本 View ( Twig )中定义如下:

{% block javascripts %}
{% javascripts
'@VolleyScoutBundle/Resources/public/js/jquery-1.10.2.min.js'
'@VolleyScoutBundle/Resources/public/js/*'
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}

ajax 调用在我的 page.js 中:

(function () {
$("#register_userType").change(function(){
var value = $(this).find("option:selected").val();
if(value == 'P' || value == 'T'){
$('.teams').show();
}
else{
$('.teams').hide();
}
});
$("#register_player_team").autocomplete({
source: function( request, response ) {
$.ajax({
url: "{{path('volley_scout_getteams_data')}}",
dataType: "jsonp",
success: function( data ) {
console.log(data);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(thrownError);
}
});
}
});
})();

更新2:我做了以下事情:

  • 安装了 bundle
  • 将 bundle 添加到我的 AppKernel
  • 在 app/config/routing.yml 中注册路由定义
  • 已发布的资源(php 应用程序/控制台资源:install --symlink web)

将 2 条 javascript 行添加到我的 base.html.twig 中,如下所示:

{% block javascripts %}
{% javascripts
'@VolleyScoutBundle/Resources/public/js/jquery-1.10.2.min.js'
'@FOSJsRoutingBundle/Resources/public/js/router.js'
'@VolleyScoutBundle/Resources/public/js/bootstrap.min.js'
'@VolleyScoutBundle/Resources/public/js/jquery-ui-1.10.3.custom.min.js'
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
<script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
<script src="{{ asset('bundles/volleyscout/js/security.js') }}"></script>
{% endblock %}

但现在我收到此错误:

GET http://localhost:8080/volleyscout/web/app_dev.php/js/routing?callback=fos.Router.setData 500 (Internal Server Error) register:117
Uncaught Error: The route "volley_scout_getteams_data" does not exist.

这很奇怪。当我清除缓存时,第一次它工作得很好。当我刷新时,它显示错误......

最佳答案

JavaScript 代码中的以下行

url: "{{path('volley_scout_getteams_data')}}",

不行...

最好的方法是使用 FOSJsRoutingBundle

1 安装 FOSJsRoutingBundle 在 JavaScript 代码中公开您的路由。 (非常简单)

2 启用您的路线

volley_scout_getteams_data:
pattern: /team/getteams
defaults: { _controller: VolleyScoutBundle:Team:getteams }
options:
expose: true

3 调整你的 js

var getTeamsUrl = Routing.generate('volley_scout_getteams_data');

$("#register_player_team").autocomplete({
source: function( request, response ) {
$.ajax({
url: getTeamsUrl,
//...
});
}
});

关于php - Ajax 操作 URL 不起作用 + Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com