2014-12-05 138 views
1

这里是我的问题,我尝试使用JQuery AJAX更新我在asp.net mvc中的数据,但是当我使用PUT方法时,它会返回一个错误说404,意味着它找不到我的控制器,但如果我使用GET/POST方法,一切工作正常,那么有什么问题?谢谢!JQuery AJAX PUT方法返回404错误(未找到)在asp.net mvc

var Test= { 
    Update: function (TestId, Test, callback) { 

     var errorMsg = "Missing a parameter!"; 
     if (!TestId) { throw errorMsg; return; } 
     if (Test== null) { throw errorMsg; return; } 
     if (callback == null) { throw errorMsg; return; } 

     var pack = { "test" : Test}; 

     $.ajax({ 
      type: "PUT", 
      url: "/test/" + TestId+ "/update", 
      dataType: "json", 
      data: JSON.stringify(pack), 
      contentType: 'application/json; charset=utf-8', 
      processData: false, 
      cache: false 
     }).done(function (result) { 
      callback(result); 
     }); 

    } 
}; 
+0

你可以发布处理请求的asp.net代码吗?或者至少有一些? – 2014-12-05 13:48:57

+0

检查请求(例如在网络选项卡下的FireFox开发人员工具)并查看正在调用的确切URL。您应该能够通过在URL栏中输入正确的路径手动调用您的方法。然后,您可以比较两者并查看您的网址路径是否正常。 – 2014-12-05 13:53:09

回答

0

你是否将它设置为.NET端的接受?

[HttpPut] 
public JsonResult Update(int id) 
{ 
    return Json("Your Response"); 
} 
+0

缺乏[HttpPut]应该会产生404错误,对吧? – 2014-12-05 14:18:55

+1

嗨,大家好,非常感谢您的帮助!我发现我的问题,这是我的iis配置,似乎很多脂肪酶都有同样的问题,一种解决方案是从您的IIS中删除WebDav,但这不适合我的情况。另一个是允许你的服务器上的这些http动词,这个为我的情况工作,这里是链接! http://geekswithblogs.net/michelotti/archive/2011/05/28/resolve-404-in-iis-express-for-put-and-delete-verbs.aspx – 2014-12-05 14:26:51

0

你应该从来没有硬编码网址MVC

改为使用@Url.Action

url: '@Url.Action("FunctionName", "ControllerName")', 

如果你想发送的参数使用

url: '@Url.Action("FunctionName", "ControllerName", new { ID = Model.MyID })', 

而且,你的理智的缘故,使用fail方法。

$.ajax("http://url") 
    .done(function() { 
    alert("success"); 
}) 
    .fail(function() { 
    alert("error"); 
}) 

如果这样不能解决您的问题,请告诉我们您收到的是哪种错误。