gpt4 book ai didi

jquery - 使用jquery跨域webmethod调用

转载 作者:行者123 更新时间:2023-12-01 06:04:01 26 4
gpt4 key购买 nike

我在 .aspx 页面内的域 A 上托管了一个 webmethod。我需要从域 B 调用此方法。我使用 $getJSON() 进行此调用,但当它返回时 data.query.results[0] 是始终为空。

域 B 中的 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 Web方法

<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。但我返回的结果为空。

响应 header

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcQ29tbW9uXFBST1xIUk9cU2VydmljZXNcSFJPQ29yZS5hc3B4?=
X-Powered-By: ASP.NET
Date: Mon, 05 Dec 2011 15:07:54 GMT
Content-Length: 616

我不确定我错过了什么。我尝试过使用 JSONP$getJSON。两者都不返回任何值。

如果您需要任何进一步的信息,请告诉我。

最佳答案

好的,我发现脚本有两个问题。首先,您应该先创建 cbFunc,然后再将其传递给 getJSON。其次,让我们检查雅虎是否通过在创建数据时发出警报来返回其数据。如果结果为空,您将需要有关 yahoo api 的更多帮助。

// Accepts a url and a callback function to run.
function requestCrossDomain() {
function cbFunc(data) {
if (data.query.created) {
//var result = JSON.parse(data.results[0]);
alert(data.query.created);//put a breakpoint here to check the data.results if you get it created.
}
else
throw new Error('Nothing returned from getJSON.');
}

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);

}

关于jquery - 使用jquery跨域webmethod调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com