私のソリューションには、2 つの asp.net MVC プロジェクトが含まれています。1 つは Web サービス、もう 1 つは通常の Web サイトで、前述の Web サービスからデータを取得します。
Web サービスのホーム コントローラーに次のメソッドがあります。
...
public JSONResult GetTeacher(){
return JSON(new {TeacherName = this.teacher.name });
}
この $.ajax メソッドを使用して、他の Web アプリケーション (Web サイトになる) からこのメソッドにアクセスしようとしています。
$.ajax({
type: 'GET',
url: 'localhost:11370/Home/GetTeacher',
contentType: 'application/json; charset=utf-8',
success: function (response) {
alert(JSON.stringify(response));
$('#results').html('Welcome, ' + response.Name);
},
error: function (error) {
alert(JSON.stringify(error));
}
});
ソリューションのデバッグを開始すると、2 つの Web 開発サーバーが両方とも異なるポートで開かれます。その結果、$.ajax 呼び出しが発生すると、次の情報がポップアップ表示されます。
the page at localhost:11510 says:
"readystate":0, "responsetext": "" , "status":0, "statustext":"error"
Google Chrome コンソールでスクリプトを直接実行しようとすると、次のメッセージが表示されます。
XMLHttpRequest cannot load http://localhost:11370/Home/GetTeacher.
Origin http://localhost:11510 is not allowed by Access-Control-Allow-Origin.
$.ajax を使用してメソッドに実際にアクセスする方法についてのヘルプをいただければ幸いです。
編集:Webサービスを呼び出すとどうなるかを確認するために、単純なhtmlファイルも作成してみました。同じ結果です。また、メソッドに URL を入力するだけで、正常に機能し、教師の名前が表示されます。