HttpResponseMessage Headers.Location似乎被忽略了

时间:2013-11-08 21:41:39

标签: http response message

我有以下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;
});

为什么忽略该位置?

1 个答案:

答案 0 :(得分:0)

好吧,我添加了

statusCode: {
   201 : function() {
            window.location.replace("/Products/testview");
   }

到我的jQuery点击功能,然后以这种方式进入所需的页面。但原来的方式不应该有效吗?