.aspxページ内のドメインAでホストされているWebメソッドがあります。私はドメインBからこのメソッドを呼び出す必要があります。私は$getJSON()
を使ってこの呼び出しを行っていますが、返されるときにはいつもdata.query.results[0]
はnullです。ドメインBでjqueryを使用したクロスドメインwebmethodコール
jQueryのコード
// Accepts a url and a callback function to run.
function requestCrossDomain() {
var site = 'http://domain A/Services/A.aspx/GetString';
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=json&callback=?';
$.getJSON(yql, cbFunc);
function cbFunc(data) {
if (data.query.results[0]) {
var result = JSON.parse(data.results[0]);
alert(result);
}
else
throw new Error('Nothing returned from getJSON.');
}
}
ドメインA WebMethod属性
<WebMethod()>
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=True)>
Public Shared Function GetString() As String
Dim ResultString As String = New JavaScriptSerializer().Serialize("Test Result")
Return ResultString
End Function
私は、同じドメインからメソッドを呼び出したときに、上記の方法は絶対に正常に動作します。しかし、クロスドメインコールは常にnullを返します。
私がFiddlerをチェックインしたとき、サーバーが応答し、コンテンツの長さが616であることを示すトラックがあります。しかし、私が返す結果はnullです。
レスポンスヘッダ
HTTP/1.1 200 OK
のCache-Control:プライベート
のContent-Type:text/htmlの。文字セット= UTF-8
コンテンツエンコード:gzipで
は異なります受け入れ-エンコーディング
サーバー:マイクロソフト-IIS/7.5
X-ASPNET-バージョン:4.0.30319
X-、ソースファイル:?= UTF-8を???B QzpcQ29tbW9uXFBST1xIUk9cU2VydmljZXNcSFJPQ29yZS5hc3B4 =
X-パワード・バイ:ASP.NET
日:月、2011年12月5日午後03時07分54秒GMT
のContent-Length:616
は私が何かわかりません私は行方不明です。私はJSONP
と$getJSON
を使って試しました。どちらも値を返しません。
詳細情報が必要な場合はお知らせください。
しかし、私は私が逃しているものを持っていると思う。私が指定したドメインは、異なるポートのローカルホストでホストされています。 Domian A:localhost:12345およびdomain B:loclahost:45612.これらのアプリケーションはWebでホストされていません。私のローカルマシンでのみ利用可能です。インターネット経由で閲覧することはできません。それがyahoo apiが私が要求しているページにscriptタグを投稿できない理由であるかどうか説明できますか? – user1081802