Доброе утро.
Открывайте консоль браузера и на вкладке "сеть" смотрите эти запросы.
Там должна быть ошибка.
Так же посмотрите логи сервера и логи самого yii2.
slo_nik, Здравствуйте, В сети нечего нет, консоль ошибок тоже не показывает. И в дебагере yii2 в логах, тоже нет нечего про эти Ajax запросы, как будто они и не происходят
AlexAll, в любом случае это не "-", а ошибка запроса, только статус не возвращает.
Дополните свой вопрос кодом ajax и действием из контролера, которое обрабатывает этот запрос.
Так же воспользуйтесь xdebug + phpstorm
function deletImage(id){
var request = new XMLHttpRequest();
request.open('POST','/item/delete-image?id='+id,true);
};
Вот экшен контролена(если по ссылке просто перейти в браузере то он отрабатывает как надо)
public function actionDeleteImage($id)
{
if($this->oldImage($id)){ //'эта функция находит картинку в папке и удаляет ее
$model = $this->findModelImage($id); // эта находит модель этой картинки и далее удаляет из базы запись
$model->delete();
return true;
}
return false;
}
В поведении verbs
'delete-image' => ['POST'],
у меня NetBeans
slo_nik, да 400. Я уже понял, и пока нашел единственное решение это отключить проверку public $enableCsrfValidation = false; Но почему то не думаю что это решение правильное отключать его проверку на весь контролер
Vitaliy Orlov, Что то не получается прикрепить токен на Ajax запрос или я что то не так делаю?
вот код
var request = new XMLHttpRequest();
var csrf = '\yii::$app->request->csrfParam => \yii::$app->request->csrfToken';
request.open('POST','/item/delete-image?id='+id,true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send(csrf);
Попробуй подебажить вручную: открой контроллер и поставь там die('123'), в начале, на след. строке и т.д.. Найдешь место где все глохнет, или обнаружишь что просто из контроллера ничего не возвращается (response имею ввиду)
если просто в браузер эту ссылку ввести /item/delete-image?id=id удаление работает
Потому что в браузере у тебя GET запрос, а ты отправляешь POST
Я знаю что POST потому что я фильтр поставил чтобы это действие только по Post запросу отрабатывалось А экшену на приеме в контролере вообще пофиг какой там запрос, он принимает id и удаляет картинку с базы и с папки