我有一个简单的帖子,看起来像
$.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: " ...)
也不会告诉浏览器获取网址。
答案 0 :(得分:0)
我刚刚结束这个
在ajax电话
上error: function (request, textStatus, errorThrown) {
console.log("FAILED to save album");
//The Album already exists, so redirect to it
window.location = request.getResponseHeader('redirectURL');
return false;
},
关于ZF2行动
$response->setStatusCode(Response::STATUS_CODE_301)->getHeaders()
->addHeaders(array('redirectURL' => $this->url()->fromRoute('albumModule', array('controller' => 'album', 'action' => 'edit', 'id' => $albumObject->getAlbumID()))));
return $response;