web-dev-qa-db-ja.com

サーバーはステータス405(メソッドは許可されていません)で応答しました

Webサービスの初心者です。Chromeコンソールでページ(Local)を実行しようとすると、次のエラーが発生します

[〜#〜]エラー[〜#〜]

リソースの読み込みに失敗しました:サーバーはステータス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");
    }

WebサービスURL

http://localhost:12015/myWebService.asmx


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

ページURL

http://localhost:11761/Default.aspx

編集:dataType: 'jsonp'を含めただけでエラーが発生しましたが、別のエラーが発生しました。

キャッチされないSyntaxError:予期しないトークン<
:12015/myWebService.asmx?op=GetCategories&callback=jQuery183010907560377381742_1356599550427&{}&_=1356599550438:3

エラーに記載されているリンクをクリックすると、ページが表示されます。それでは何が問題になるのでしょうか?エラーの意味(およびコードのどの部分を表示するか)がわかりません。助けてください。

関連

Link1 (説明)
Link2 (解決済み)

6
Mr_Green

私は友人の提案にjquery ajax呼び出しの上に簡単な行を追加しました

 jQuery.support.cors = true;

今ではうまくいきます:)

のみ[〜#〜] ie [〜#〜]ブラウザ

推奨 ではないため、別の方法で解決できるかどうかを知りたいです。

とにかく、私は多くの努力の後にこの質問をもう一度し、この投稿で解決された別のエラーが発生しました here

2
Mr_Green

これを試して

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

または編集web.config

<system.web>
    ...
    <webServices>
        <protocols>
              <add name="HttpSoap"/> 
              <add name="HttpPost"/> --> 
              <add name="HttpGet"/>
              <add name="Documentation"/>
              <add name="HttpPostLocalhost"/>
        </protocols>
    </webServices>
    ...
</system.web>

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

4
Miqdad Ali

次のように、コンテンツタイプを "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 <div>.
  $('#RSSContent').html(msg.d);
 }
});
});

また参照 link

3
rahul.deshmukh

私の場合、サーブにPOSTメソッドがなかったため失敗しましたが、GETメソッドがありました。

type: "GET"を変更したので、現在機能しています。

2
user5857614

サーバー側のすべてのオリジンにアクセスを許可を追加

0
Cáptáin Mosa