Estoy configurando una llamada Ajax simple en uno de mis formularios. Cuando un usuario ingresa caracteres en un campo, se activa la siguiente llamada Ajax:
self.modify = function (input_field) { if ($(input_field).val().length > 5) { $.post("{{path('get_bio_control_sample')}}", {sample_number: $(input_field).val()}, function (response) { if (response.code == 100 && response.success) { alert(response.sample_number); } }, "json"); } };Que está destinado a acceder a la siguiente acción del controlador:
class BioControlController extends Controller { /** * @Route("/bio_control/sample", name="get_bio_control_sample") */ public function getBioControlSampleAction(Request $request){ $sample_number = $request->query->get('sample_number'); $response = array("code" => 100, "success" => true, "sample_number" => $sample_number, "sample_data" => "test"); return new JsonResponse($response); } }Sin embargo, cuando se activa la llamada, JS devuelve el error:
http://127.0.0.1:8000/omics_experiment/%7B%7Bpath('get_bio_control_sample')%7D%7D 404 (Not Found) Accedo a la llamada Ajax desde omics_experiment/new (que está en OmicsExperimentController ) y uso la ruta /bio_control/sample (como se muestra en la anotación), pero no funciona. ¿Alguien puede explicar lo que estoy haciendo mal?
Usé esta pregunta como plantilla, el hecho de que esté usando Symfony 3 podría significar que hay errores sintácticos.
Hace poco tuve que hacer esto. Tampoco soy un experto en Symfony, pero como acabo de hacer esto, es posible que pueda ayudar. Usar Symfony no es muy diferente a hacerlo con una URL estática. Lo principal es asegurarse de que su controlador y ruta estén configurados correctamente y funcionen sin AJAX, luego solo necesita usar la ruta establecida en su ruta para la llamada .post.
Y lo que lo empeora es que es realmente difícil probar este tipo de interacción. Incluso las ramitas incluidas pueden hacer que falle si están mal configuradas.
Mirando su código nuevamente, creo que este puede ser el problema. Cambia esto
$.post("{{path('get_bio_control_sample')}}", {sample_number:a esto
$.post("/bio_control/sample", {sample_number:Porque creo que la forma en que lo tienes solo es buena para las plantillas twig, así que si Symfony no está mirando tu archivo JQuery como lo hace con una plantilla twig, entonces no entenderá cómo obtener la ruta.