【发布时间】:2012-07-04 14:43:12
【问题描述】:
我一直在尝试解决这个 answer 的问题,但我没有运气。
总的来说,我创建了一个 WCF 项目,其中包含我想通过 AJAX 访问的许多函数(通过我的 html 页面中的 javascript)。
这是我的网络服务中的一个函数示例:
iService
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
string GetStuff();
服务
public string GetStuff()
{
string url = string.Format("http://myapi.co.uk/api/mystuff");
WebRequest myReq = WebRequest.Create(url);
// Where USERNAME and PASSWORD are constants
string usernamePassword = USERNAME + ":" + PASSWORD;
CredentialCache mycache = new CredentialCache();
mycache.Add(new Uri(url), "Basic", new NetworkCredential(USERNAME, PASSWORD));
myReq.Credentials = mycache;
myReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));
WebResponse wr = myReq.GetResponse();
Stream receiveStream = wr.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
string content = reader.ReadToEnd();
return content;
}
请注意,我也尝试过直接返回 Stream。
转到我的 javascript 和 ajax!
function getData()
{
jQuery.support.cors = true;
$.ajax({
type: "GET",
url: "http://localhost:15574/Service1.svc/GetStuff",
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
success: function(result) {
alert(result);
},
error: function(msg) {
alert("Fail: " + msg.status + ":" + msg.statusText);
}
});
}
我点击了错误部分,但奇怪的是一条成功的错误消息......
我最初认为问题是因为来自外部 API 的 JSON 格式不正确,但我尝试更改我的 Web 服务以返回一些完全有效的 JSON,并显示了相同的错误。就像我也提到的那样,我尝试更改我的网络服务以返回 Stream,但我没有运气。
对此的任何帮助将不胜感激,我将不胜感激。
更新
附:它似乎在 WCF 测试客户端中工作正常,返回一个符合我期望的字符串。
P.P.S 刚刚在错误函数中添加了另一个参数以获取其状态,我得到parsererror
P.P.P.S 传递给错误的第三个参数是jquery171014696656613195724_1341477967656 was not called
【问题讨论】:
-
GetStuff方法的实现在哪里?
-
抱歉!复制了一个不同的函数!
标签: c# javascript ajax json web-services