我正在尝试发布数据,同时也会重定向到该页面。是否有可能发布数据并重定向到该页面? 我可以发布数据,但无法重定向到该页面。我不希望在帖子的成功中重定向。
return this._http.post('/Tickets/Search', 'body', { headers: this.getHeaders() })
.map((res: Response) => res.json());
}
Jquery实现:
function ShowDashboard(jqlJson)
{
post("http://localhost:22541/ServiceDesk/Ticket/Dashboard", jqlJson, "post");
}
function ShowDashboard1() {
var jqlBody = {};
jqlBody["jql"] = "project = PIMCO and reporter = ssolairajan";
post("http://localhost:22541/ServiceDesk/Ticket/Dashboard", jqlBody, "post");
}
function post(path, params, method) {
method = method || "post";
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", path);
for (var key in params) {
if (params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
答案 0 :(得分:0)
通常,您希望完成帖子,然后重定向。 但你几乎可以做任何你想做的事。
我想象这个函数的调用者:
return this._http.post('/Tickets/Search', 'body', { headers: this.getHeaders() })
.map((res: Response) => res.json());
}
应订阅执行post请求,然后调用者必须调用
router.navigate(['/Tickets/Search']);
为了重定向。
假设您的函数名为makeASearch(search:string)
`function foo(searchQuery){
/*Execute the post*/
this.makeASearch(searchQuery).subscribe();
/*Redirect to /Tickets/Search obviously you should have the route defined*/
this.router.navigate(['/Tickets/Search']);
}`
这样,post请求将在你被重定向到/ Tickets / Search
后立即执行告诉我它是否对你有帮助。
提示: 具有路由器和异步的陷阱是,如果您在执行所有发布请求之前调用router.navigate,则无法确定它们是否会被执行,因为angular会在重定向时破坏您的组件。