从 HTML 删除对南希的请求
DELETE request to Nancy from HTML
我在 Nancy 中实现了 REST API。我对以下端点使用 DELETE:
Delete ["/usermanagement/{id}"] = parameters => {
repo.DeleteUser(parameters.id);
return Response.AsRedirect("/usermanagement");
};
我想从我的简单 html 页面调用这个端点。到目前为止,我想出了这个解决方案:
<button type="button" onclick="deleteUserWithID('@Current.ID')">Delete</button></td>
和 JS:
<script>
function deleteUserWithID( ID ){
var xhr = new XMLHttpRequest();
xhr.open( 'DELETE', 'usermanagement/' + ID, false );
xhr.setRequestHeader( 'Content-Type', 'text/html' );
xhr.send(null);
}
</script>
就命中端点而言,这是可行的,可以执行业务逻辑。问题是 return 不会 AsRedirect("/usermanagement");
即:它不会重新加载页面。我试图在没有任何上述 JS 的情况下直接从 POSTMAN 执行此端点,并且我返回了预期的 html (/usermanagement
) 页面。
有没有人遇到过类似的问题?上面的 JS 可能有什么问题,它导致 Nancy 从浏览器执行时 NOT return /usermanagement
页面(通过 POSTMAN 执行时 returning 这个页面)?我试了好几个浏览器,都没有结果。
浏览器重定向不像 AJAX 那样工作(即 XMLHttpRequest
)。如果您检查 xhr.responseText
属性,我想您会发现它包含 /usermanagement
页面的 HTML。但是,如果你真的想将浏览器重定向到那个页面,你应该通过 JavaScript:
function deleteUserWithID( ID ){
var xhr = new XMLHttpRequest();
xhr.open( 'DELETE', 'usermanagement/' + ID, true );
xhr.setRequestHeader( 'Content-Type', 'text/html' );
xhr.onreadystatechange = handleResponse;
xhr.send(null);
}
function handleResponse(e) {
if (this.readyState == 4) {
if (this.status == 200) {
location.href = "/usermanagement";
}
}
}
我在 Nancy 中实现了 REST API。我对以下端点使用 DELETE:
Delete ["/usermanagement/{id}"] = parameters => {
repo.DeleteUser(parameters.id);
return Response.AsRedirect("/usermanagement");
};
我想从我的简单 html 页面调用这个端点。到目前为止,我想出了这个解决方案:
<button type="button" onclick="deleteUserWithID('@Current.ID')">Delete</button></td>
和 JS:
<script>
function deleteUserWithID( ID ){
var xhr = new XMLHttpRequest();
xhr.open( 'DELETE', 'usermanagement/' + ID, false );
xhr.setRequestHeader( 'Content-Type', 'text/html' );
xhr.send(null);
}
</script>
就命中端点而言,这是可行的,可以执行业务逻辑。问题是 return 不会 AsRedirect("/usermanagement");
即:它不会重新加载页面。我试图在没有任何上述 JS 的情况下直接从 POSTMAN 执行此端点,并且我返回了预期的 html (/usermanagement
) 页面。
有没有人遇到过类似的问题?上面的 JS 可能有什么问题,它导致 Nancy 从浏览器执行时 NOT return /usermanagement
页面(通过 POSTMAN 执行时 returning 这个页面)?我试了好几个浏览器,都没有结果。
浏览器重定向不像 AJAX 那样工作(即 XMLHttpRequest
)。如果您检查 xhr.responseText
属性,我想您会发现它包含 /usermanagement
页面的 HTML。但是,如果你真的想将浏览器重定向到那个页面,你应该通过 JavaScript:
function deleteUserWithID( ID ){
var xhr = new XMLHttpRequest();
xhr.open( 'DELETE', 'usermanagement/' + ID, true );
xhr.setRequestHeader( 'Content-Type', 'text/html' );
xhr.onreadystatechange = handleResponse;
xhr.send(null);
}
function handleResponse(e) {
if (this.readyState == 4) {
if (this.status == 200) {
location.href = "/usermanagement";
}
}
}