Я настраиваю простой вызов Ajax в одной из моих форм. Когда пользователь вводит символы в поле, активируется следующий 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");
}
};
Который предназначен для доступа к следующему действию контроллера:
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);
}
}
Однако, когда вызов активирован, JS возвращает ошибку:
http://127.0.0.1:8000/omics_experiment/%7B%7Bpath('get_bio_control_sample')%7D%7D 404 (Not Found)
Я получаю доступ к вызову Ajax из omics_experiment/new
(который находится в OmicsExperimentController
) и используя маршрут /bio_control/sample
(как показано в аннотации), но это не работает. Может кто-нибудь объяснить, что я делаю не так?
я использовал этот вопрос в качестве шаблона, тот факт, что я использую Symfony 3, может означать наличие синтаксических ошибок.
Я просто должен был сделать это недавно. Я не эксперт по Symfony, но, поскольку я только что сделал это, я могу помочь. Использование Symfony не сильно отличается от использования статического URL. Главное, чтобы убедиться, что ваш контроллер и маршрут настроены правильно и работают без AJAX, тогда вам просто нужно использовать путь, заданный в вашем маршруте для вызова .post.
И что еще хуже, это то, что действительно трудно проверить этот тип взаимодействия. Даже ваши веточки могут привести к сбою, если они настроены неправильно.
Глядя на ваш код еще раз, я считать это может быть проблемой. Изменить это
$.post("{{path('get_bio_control_sample')}}", {sample_number:
к этому
$.post("/bio_control/sample", {sample_number:
Потому что я думаю, что у вас это хорошо только для шаблонов веток, поэтому, если Symfony не смотрит на ваш файл JQuery, как это делает шаблон веток, то он не поймет, как получить маршрут.
Других решений пока нет …