我有以下Web Api方法,就创建新产品和设置位置而言,它可以正常工作。我知道这一点,因为我检查了Google开发人员工具中的响应标头,看它是否有效。如果我将工具中的位置剪切并粘贴到浏览器,页面加载正常。但是,它不会因为从方法中恢复响应而加载。
public HttpResponseMessage PostProduct(Product product)
{
productsRepository.Create(product);
var response = Request.CreateResponse<Product>(HttpStatusCode.Created, product);
string uri = Url.Link("ProductsIndex", null);
response.Headers.Location = new Uri(Request.RequestUri,"/Products/testview");
return response;
}
调用PostProduct的jQuery:
$("#createjQButton").click(function () {
var product = { Name: $("#Name").val(), Category: $("#Category").val(), Price: $("#Price").val() };
var json = JSON.stringify(product);
// Send an AJAX request to create a new product
$("#createjQButton").click(function () {
var product = { Name: $("#Name").val(), Category: $("#Category").val(), Price: $("#Price").val() };
var json = JSON.stringify(product);
$.ajax({
url: '/api/productsapi',
cache: false,
type: 'POST',
data: json,
contentType: 'application/json; charset=utf-8'
});
return false;
});
为什么忽略该位置?
答案 0 :(得分:0)
好吧,我添加了
statusCode: {
201 : function() {
window.location.replace("/Products/testview");
}
到我的jQuery点击功能,然后以这种方式进入所需的页面。但原来的方式不应该有效吗?