在twig中,我使用do {
audioPlayer = try AVAudioPlayer(contentsOf: YourURL)
audioPlayer?.delegate = self
audioPlayer?.play()
} catch let error {
print("audioPlayer error: \(error.localizedDescription)")
}
,因此我可以使用data-post-url="{{ path('ajax')}}"
然而,不是去http://localhost/happysaucer/web/app_dev.php/ajax而是去 http://localhost/happysaucer/web/app_dev.php/profile/[object%20Object]
这很奇怪,因为当我在console.log(路径)的路径上变量它返回正确的URL。当我对网址进行硬编码时,路径就是“变量返回ajax调用就像应该的那样。
AJAX电话:
var path = $("#edit-url-js").data();
控制器操作
$(document).ready(function(){
var path = $("#edit-url-js").data();
$(".option-js").on("change", function() {
$.ajax({
url: path,
type: "post",
data: "test",
success: function(data) {
}
});
});
});
Twig代码
/**
* @Route("/ajax", name="ajax")
*/
public function ajaxAction(Request $request)
{
$r = new JsonResponse();
return $r->setData([
'success' => true,
]);
}
答案 0 :(得分:1)
在执行console.log(路径)时获取正确的URL真的很奇怪,但是由于上下文的原因,它可能会从您调用它的位置发生变化,可能存在全局路径变量在哪里?
无论如何,有3种方法可以正确获取该网址:
jQuery的:
var path = $("#edit-url-js").data("post-url")
var path = $("#edit-url-js").attr("data-post-url")
Pure Javascript:
var path = document.getElementById("#data-post-url").getAttribute("data-post-url")
但我建议你把URL放在你的选项事件上,使其成为该选项的独家选择,只要你想要它是独家的,例如:
$(document).ready(function() {
$(".option-js").on("change", function() {
var $optionElement = $(this)
$.ajax({
url: $optionElement.data("post-url"),
type: "post",
data: "test",
success: function(data) {
}
});
});
});