【问题标题】:jQuery consuming a json wcf C# servicejQuery 使用 json wcf C# 服务
【发布时间】:2012-08-09 09:14:00
【问题描述】:

这就是我的服务的样子。
我有一个类和一个接口。我的服务是公开的,我可以通过 wcftestClient 工具调用它们。

我可以使用我的 jQuery 来使用这样的网络服务吗?

我遇到的问题是在 jQuery 中调用它。它以 JSON 格式返回。 我在 firebug 中收到以下错误。

状态码: HTTP/1.1 404 未找到

.cs

public static string Serialize(object obj)
        {

            if (obj == null)
            {
                string temp = "";
                temp = "";
                obj = temp;
            }

            var jsonSerializer = new DataContractJsonSerializer(obj.GetType());
            string returnValue = "";
            using (var memoryStream = new MemoryStream())
            {
                using (var xmlWriter = JsonReaderWriterFactory.CreateJsonWriter(memoryStream))
                {
                    jsonSerializer.WriteObject(xmlWriter, obj);
                    xmlWriter.Flush();
                    returnValue = Encoding.UTF8.GetString(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
                }
            }
            return returnValue;
        }

        public string HelloWorld()
        {
            return "Hello World";
        }

界面

 [OperationContract]        
        string HelloWorld();

jQuery

 function GetService() {
                            var BizName = $('#txtBizName').val();
                            //alert(BizName);
                            $.ajax({
                                url: "http://www.website.com/WCFService/EdWebService.svc?HelloWorld",
                                type: "GET",
                                dataType: "json",                               
                                contentType: "application/json; charset=utf-8",
                                success: function(msg) {
                                    $('#status').html('Output: '+msg['d']['Id']);
                                },
                                error: function(e) {
                                    $('#status').innerHTML = "Unavailable";
                                }                               
                            });

                            alert(BizName);
                        }

【问题讨论】:

  • 顺便问一下,你的页面有jQuery和WCF服务在同一个域和端口上吗?

标签: c# jquery asp.net wcf


【解决方案1】:

你应该替换url: "http://www.website.com/WCFService/EdWebService.svc?HelloWorld" 一开始是url: "http://www.website.com/WCFService/EdWebService.svc/HelloWorld"

原因:您没有调用 HelloWorld 方法,而是将“HelloWorld”作为参数(以非常错误的方式)传递给服务的某个未知方法(我不知道在没有指定方法的情况下使用哪种方法解析服务名称) .

那么它应该可以工作。如果没有,请更新您的问题。

【讨论】:

  • 我有一个名为 HelloWorld 的方法,它没有参数并返回一个字符串“HelloWorld”。我怎么称呼这个?此 url 显示 wsdl website.com/WCFService/EdWebService.svc?HelloWorld,当添加到浏览器 url 时,以下 url 返回错误 400 website.com/WCFService/EdWebService.svc/HelloWorld
  • @KrivahnDoss 请尝试在 $ajax 调用中将 GET 更改为 POST。我提供的 URL 是正确的,因为错误 404(未找到)现在已替换为错误 400(错误请求)。现在您应该创建正确的请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
相关资源
最近更新 更多