У меня есть простой пост, который выглядит какZF2: Переадресация вызова() url | триггер GET из почтового действия
$.ajax({
url: '/album/createAlbum.html',
type: 'POST',
dataType: 'json',
async: true,
data: postData,
success: function (data) {
console.log("Successfully saved album");
console.log(data);
return data;
},
error: function (data) {
console.log("FAILED to save album");
return false;
}
});
и простое действие, которое выглядит как
public function createAlbumAction()
{
$request = $this->getRequest();
$response = $this->getResponse();
$album = $request->getPost('album');
//First check to see if the user already has that album
$albumObject = $this->_dataService->getAlbum($userID, $album);
if ($albumObject){
//This is the issue
$this->redirect()->toRoute('albumModule', array('controller' => 'album', 'action' => 'edit'));
} else {
$albumObject = $this->_dataService->createAlbum($userID, $album);
}
$messages = array();
if (!empty($messages)){
$response->setContent(\Zend\Json\Json::encode($messages));
} else {
$response->setContent(\Zend\Json\Json::encode(array('albumID' => $albumObject->getAlbumID())));
}
return $response;
}
Проблема у меня есть на redirect()
, я знаю, что перенаправление отправит меня на этот маршрут, но я должен сообщить обозревателю об этом маршруте GET
. Я не могу понять, как это сделать с POST
. Я прочитал кое-что о том, как настроить заголовок на 303, чтобы браузер знал, что нужно перенаправить, но я не знаю, как вернуть это в ответ на JSON.
Даже когда я пытаюсь сделать header:("Location: " ...)
, что не укажет браузеру ПОЛУЧИТЬ URL.
Если вы хотите перенаправить пользователя на другую страницу, возможно, потребуется делать с Java Script. Итак, верните некоторый статус в ответе Ajax и выполните перенаправление в JS. – tasmaniski
@ tasmaniski k, я могу это сделать. Просто жаль, что есть простой способ сделать это с сервера :( – Jordan