服务器响应状态为405(方法不允许)

我是Web服务的新用户,当我尝试在Chrome控制台中运行我的页面( 本地 )时出现以下错误

错误

无法加载资源:服务器响应状态为405(方法不允许) http://localhost:12015/myWebService.asmx?op=GetCategories


这是相关的代码:

jQuery的

  $.ajax({ url: "http://localhost:12015/myWebService.asmx?op=GetCategories", type: "POST", ------------ ------------ success: function (data) { var categories = data.d; $.each(categories, function (index, category) { category.CategoryId).text(category.CategoryName); }); }, error: function (e) { //always executing 'error' only alert("hello"); } 

网络服务url

http://localhost:12015/myWebService.asmx


  [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public List GetCategories() { //code } 

页面URL

http://localhost:11761/Default.aspx

编辑:当我刚刚包含dataType: 'jsonp'时错误消失dataType: 'jsonp'但是现在还有另一个错误。

未捕获的SyntaxError:意外的令牌<
:12015/myWebService.asmx?op=GetCategories&callback=jQuery183010907560377381742_1356599550427&{}&_=1356599550438:3

当我点击链接(错误中提到的)时,它正在显示页面。 那可能是什么问题? 我不知道错误意味着什么(以及代码的哪一部分显示)。 请帮忙。

有关

Link1 (解释)
Link2 (已解决)

试试这个

  [WebMethod] [ScriptMethod(UseHttpPost = true)] public List GetCategories() { //code } 

或编辑web.config

  ...     -->      ...  

请参阅http://codeclimber.net.nz/archive/2006/12/22/How-to-enable-an-ASP.NET-WebService-to-listen-to-HTTP.aspx

将您的内容类型设置为“application / json; charset = utf-8”,如下所示

 $(document).ready(function() { $.ajax({ type: "POST", url: "RSSReader.asmx/GetRSSReader", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { // Hide the fake progress indicator graphic. $('#RSSContent').removeClass('loading'); // Insert the returned HTML into the 
. $('#RSSContent').html(msg.d); } }); });

也参考链接

我在jquery ajax调用之上的朋友的建议上添加了一个简单的行

  jQuery.support.cors = true; 

现在它工作得很好:)

只在IE浏览器中

我很乐意知道它是否可以使用不同的方式解决,因为不推荐 。

无论如何,经过多次努力后我又问了这个问题,我得到了不同的错误,这篇文章在这里解决

在我的情况下它失败了因为在servet中没有POST方法,但我有GET方法。

所以我改变了类型:“GET”,所以它现在正在工作。