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
エラーに記載されているリンクをクリックすると、ページが表示されます。それでは何が問題になるのでしょうか?エラーの意味(およびコードのどの部分を表示するか)がわかりません。助けてください。
関連
これを試して
[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>
次のように、コンテンツタイプを "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
私の場合、サーブにPOSTメソッドがなかったため失敗しましたが、GETメソッドがありました。
type: "GET"を変更したので、現在機能しています。
サーバー側のすべてのオリジンにアクセスを許可を追加