だからここに私の電話があります:
$.ajax({
url: url,
headers: { 'Access-Control-Allow-Origin': '*' },
crossDomain: true,
success: function () { alert('it works') },
error: function() {alert('it doesnt work')},
datatype: 'jsonp'
});
私のURLは合法です。あなたは私がデータセットを持っていないことに気づくでしょう。実際にxmlが返されるため、データ型が適切に機能しているかどうかはわかりませんが、私も試してみました。 sportsdataのAPIへの呼び出し。サイトでは、x-originating-ipのリクエストヘッダーが表示されるため、access-control-allow-Originがどこにあるかを試しました。
これらはすべてaccess-controlエラーを返しました。設定した場合のデータが明確ではないため、ここでは省略しました。私はグーグルでいくつかの異なることを試しましたが、なぜエラーが発生するのか理解しています。修正方法がわかりません。私は尋ねる必要はありませんでしたが、誰かが私に説明したり、私に道を見せてくれれば、それは大歓迎です
http://encosia.com/using-cors-to-access-asp-net-services-across-domains/
クロスドメインリソース共有の詳細については、上記のリンクを参照してください。
[〜#〜] jsonp [〜#〜]を使用して試すことができます。 APIがjsonpをサポートしていない場合、APIとクライアント間の仲介者として機能するサービスを作成する必要があります。私の場合、asmxサービスを作成しました。
以下のサンプル:
ajax呼び出し:
$(document).ready(function () {
$.ajax({
crossDomain: true,
type:"GET",
contentType: "application/json; charset=utf-8",
async:false,
url: "<your middle man service url here>/GetQuote?callback=?",
data: { symbol: 'ctsh' },
dataType: "jsonp",
jsonpCallback: 'fnsuccesscallback'
});
});
jsonpを返すサービス(asmx):
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void GetQuote(String symbol,string callback)
{
WebProxy myProxy = new WebProxy("<proxy url here>", true);
myProxy.Credentials = new System.Net.NetworkCredential("username", "password", "domain");
StockQuoteProxy.StockQuote SQ = new StockQuoteProxy.StockQuote();
SQ.Proxy = myProxy;
String result = SQ.GetQuote(symbol);
StringBuilder sb = new StringBuilder();
JavaScriptSerializer js = new JavaScriptSerializer();
sb.Append(callback + "(");
sb.Append(js.Serialize(result));
sb.Append(");");
Context.Response.Clear();
Context.Response.ContentType = "application/json";
Context.Response.Write(sb.ToString());
Context.Response.End();
}