c# - Ajax 请求 WCF 数据(JSON 格式)但出现错误并显示成功消息

标签 c# javascript ajax json web-services

我一直在尝试用这个 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);
      }
   });
}

我点击了错误部分,但奇怪的是出现了一条成功错误消息...

Error Message

我最初认为问题是因为来自外部 API 的 JSON 格式不正确,但我尝试更改我的 Web 服务以返回一些完全有效的 JSON 并显示相同的错误。正如我也提到的,我尝试更改我的网络服务以返回 Stream,但我没有运气。

如有任何帮助,我将不胜感激,我将不胜感激。

更新

附言它似乎在 WCF 测试客户端中运行良好,返回一个符合我预期的字符串。
P.P.S 刚刚向错误函数添加了另一个参数以获取其状态,我得到了 parsererror P.P.P.S 传递给错误的第三个参数是 jquery171014696656613195724_1341477967656 was not called

最佳答案

您的 jquery 代码中有 dataType : 'jsonp'。 这告诉 jQuery 将 callback=XXXX 附加到 URL。

此对话的服务器端需要将 JSON 结果包装在该回调中。 但您的代码不会那样做。

您确定要 jsonp 吗?

您可以使用 dataType: 'json' 来解决这个问题

关于c# - Ajax 请求 WCF 数据(JSON 格式)但出现错误并显示成功消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331263/

相关文章:

c# - 使用不显眼的 javascript/MVC3 和 DataAnnotations 验证电子邮件地址

c# - 工具栏中的按钮自动对齐

javascript - 使用 jquery 时单击链接标签?

javascript - 通过子级别的 XML 解析循环

javascript - eventDrop 完整日历不移动事件

jQuery:通过 Ajax 加载模态对话框内容

c# - HiddenField.value 在 JS 中未定义

javascript - 简单继承

javascript - Ajax 从输入值更新分数

c# - c#调用窗体后如何返回调用方法?