Я получаю: это сообщение об ошибке:
Не найден маршрут для "GET / module / % 3C" (из "http://site/app_dev.php/module/page")
с использованием следующего вызова ajax:
timeStamp = ( new Date() ).getTime();
$.ajax( {
method : 'POST',
url : 'http://site/app_dev.php/module/page/Delete/' +
timeStamp,
data : formData,
dataType : 'json',
async : true,
cache : false,
contentType : false,
processData : false,
success : function( data ) { ... },
error : function( jqXHR, textStatus, errorThrown ) { ... }
} );
Вот аннотация маршрута страницы и определения функций, которые я пытаюсь вызвать:
/**
* @Route("/module/page")
* @Route("/module/page/{timeStamp}")
* @Route("/module/page/Delete/{timeStamp}")
*
* @return: page response HTML string, JSON encoded action results or
* JSON encoded error results.
*/
public function pageAction( $timeStamp=NULL ) { ... }
Что такоестранно, что эта функция успешно используется для создания страницы, которая содержит несколько других похожих ajax-вызовов, которые работают в дополнение к приведенному выше.
Вот один из работающих вызовов:
$.ajax( {
method : 'POST',
data : formData,
dataType : 'json',
async : true,
cache : false,
contentType : false,
enctype : 'multipart/form-data',
processData : false,
success : function( data, textStatus, jqXHR ) { ... ),
error : function( data ) { ... }
} );
Основное отличие состоит в том, что неудачный вызов ajax имеет явный URL, а тот, который работает, использует неявную адресную строку отображаемой страницы.
Я попытался выполнить вызов с этими двумя частями и без них.URL, но получить тот же результат в любом случае.
Я не знаю, если это важно, но когда я использую отладчик в Chrome, точка останова в первой строке кода в функции успеха кратко выделяется итогда страница повторяетсяaced с отображением «Маршрут не найден ...»
Поскольку в вызове используется сообщение «POST», почему в сообщении об ошибке говорится «Get» и используется явный URL, включающий «/ Delete»и '/' + timeStamp, почему они не отображаются в сообщении об ошибке?
Кстати.В вызове ajax с явным URL-адресом я добавляю метку timeStamp для предотвращения возврата ранее кэшированного ответа, а не фактический вызов на сервер для удаления информации, указанной в объекте formData.
Inдругой ajax-вызов, который возвращает информацию, которая должна быть удалена при неудачном вызове, я обнаружил, что даже если было установлено «cache: false», вызов вернул бы устаревший ответ от предыдущего вызова, если бы я не включилtimeStamp в явном URL, но с включенным timeStamp, этот случай работает нормально.