1

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

为什么位置被忽略?

4

1 回答 1

0

嗯,我加了

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

到我的 jQuery 单击功能并以这种方式到达所需的页面。但是原来的方法不应该奏效吗?

于 2013-11-08T23:32:06.200 回答