В настоящее время я работаю над проектом Symfony2, который в какой-то момент требует отправки формы и выполнения длительной операции с файловой системой (рекурсивная копия).Параллельная работа с использованием AJAX в Symfony2
В настоящий момент пользователь должен дождаться завершения операции файловой системы и обработки формы перед ее перенаправлением. Я попытался улучшить эту функциональность, используя простой AJAX. У меня возникли проблемы с невозможностью выполнить отправку формы и одновременное обращение к другому действию/контроллеру.
Поддерживает ли Symfony2 одновременные запросы контроллера? Если это не так, есть ли способ завершить достижение чего-то, что будет работать как основной параллелизм?
Это набросок того, что я пытаюсь сделать с точки зрения кода:
<form action="{{ path('performSomeAction', { 'id': client.getId(), 'someId':some.someId() }) }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<input type="submit" />
И это то, что я пытаюсь сделать одновременно с отправкой формы, используя асинхронный XMLHttpRequest:
<script language="JavaScript" type="text/javascript">
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest(); //Not IE
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP"); //IE
} else {
alert("Your browser doesn't support the XmlHttpRequest object. ");
}
}
var receiveRequest = getXmlHttpRequestObject();
function handleFetchProgress() {
if (receiveRequest.readyState == 4) {
var newData = receiveRequest.responseText;
var oldData = document.getElementById("span_result").innerHTML;
var toDisplay = oldData + "<br />" + newData;
document.getElementById("span_result").innerHTML = toDisplay;
}
}
function fetchProgress() {
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
receiveReq.open("GET", '{{ path('fetchProgress') }}', true);
receiveRequest.onreadystatechange = handleFetchProgress;
receiveRequest.send(null);
}
}
$(document).ready(function() {
$('form').submit(function() {
setInterval("fetchProgress()", 1000);
return false;
});
});
Symfony2 для создания веб-приложений, я надеюсь, что это позволяет одновременных запросов контроллера ... Описать «не в состоянии выполнить отправку формы и запрашивая другое действие/контроллер одновременно "более точно, пожалуйста. – greg0ire
Как только выполняется запрос AJAX на .submit jQuery (это тот, который пытается вернуть Response с некоторым текстом - «receiveReq.open» («GET», «{{path ('fetchProgress')}} '), контроллер, ответственный за обработку формы ({{path ('performSomeAction')}}) ничего не возвращает. Я получаю ответ от запроса AJAX, но ответа от контроллера представления формы нет. Итак, я отправляю форма, страница загружается в течение одной секунды, пока не будет получен ответ от запроса AJAX, и контроллер, ответственный за прекращение подачи формы, отключится. –
У вас есть 2 запроса? Проверьте свой журнал доступа. – greg0ire