Ajax请求没有返回
我有这样的模板:Ajax请求没有返回
<div class="save-icon" style="margin-top: 2%">
<a href="" onclick="changeNumber({{ number.getId }})">Link</a>
</div>
的JS:
{% block javascript %}
{{ parent() }}
<script type="text/javascript">
function changeNumber(id){
console.log(id);
$.ajax({
type: "POST",
url: "{{path('numbers_update')}}",
data: { id:id},
success: function(msg){
//alert("Data Saved: " + msg);
}
});
}
</script>
{% endblock %}
在页面的源代码,我有:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
function changeNumber(id){
console.log(id);
$.ajax({
type: "POST",
url: "/app_dev.php/admin/numbers/update",
data: { id:id},
success: function(msg){
//alert("Data Saved: " + msg);
}
});
}
</script>
为numbers_update
的配置路线:
numbers_update:
path: /numbers/update
defaults: { _controller: ClientBundle:Admin/NumbersBlock:update }
requirements:
_method: POST
的梅索德
public function updateAction(Request $request){
$i_id = $request->request->get('id');
$em = $this->getDoctrine()->getManager();
return $this->json(array());
}
我使用基本认证,所以我加入此呼叫在security.yml
:
access_control:
- { path: ^/admin/homepage, roles: ROLE_ADMIN }
- { path: ^/admin/numbers, roles: ROLE_ADMIN }
- { path: ^/admin/numbers/update, roles: ROLE_ADMIN }
我现在登录,但我没有得到一个retourn在ajax请求之后。
请帮帮我!我不明白可能是什么问题。你有什么想法吗? ... Thx提前。
我认为你必须:
use Symfony\Component\HttpFoundation\JsonResponse;
和
return new JsonResponse(array('key' => 'value'));
//instead of
return $this->json(array());
清除缓存以确保万无一失。
在chrome中,您可以在开发工具(当您使用ajax)的“网络”选项卡中找到更多关于错误的信息。
不工作...同样的问题 – user7424312
你是否看到过网络中的symfony错误页面标签???这是一个500错误? 你必须看看这个错误页面,否则你不会轻易找到你的错误... – Constantin
我如何调试这个错误?当请求发出ajax请求时,请帮助我 – user7424312
你错过了return false
你的处理程序中两个可能的地方之一。 做这一点:
onclick="changeNumber({{ number.getId }}); return false;"
或
onclick="return changeNumber({{ number.getId }});"
如果你去的第二个解决办法 - 你需要在你的changeNumber
函数的末尾添加return false;
。
这里的问题是,当你点击这个<a>
时,对你的处理程序的调用确实有效,它可能会调用AJAX,但你没有看到它。 既然你没有阻止a.click
的默认行为,那么这个页面实际上会遵循href
中给出的链接(除了调用你的处理程序),并且你离开当前页面(或者可能再次转到同一页面)。
无论您是转到不同的页面还是转到不同的页面,WebDeveloper工具都很可能会刷新,并且您将看不到列出的AJAX调用。
WebDeveloper工具的提示:它也可能有助于在页面提交和刷新之间启用不清除控制台和网络选项卡。
<a href="" onclick="changeNumber({{ number.getId }})">Link</a>
我建议你修改HREF链接,您的href =“”, 当你在此页上单击将再次刷新。即使你离开阿贾克斯。因为刷新页面,你也看不出来。你可以改为 Href =“javascript :;”在其他地方,然后你按照正常的思维方式来写。
什么是响应代码?尝试注释除了最后一个行动中的行动中的所有行,并检查响应代码是否为200 –
同样的问题....回应是200 – user7424312
你试过了返回JsonResponse()吗? – panche14