0

我开发了一个 WCF Webservice,由 jQuery 调用。WCF Web 服务和启用 WCF Web 服务的 AJAX 客户端运行在不同的 Web 服务器上。

这是Web服务的定义。

[ServiceContract]
 interface IPersonService
 {
   [OperationContract]
   Person InsertPerson(Person person);
 }


[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class PersonService : IPersonService
{
  ...

  [WebInvoke(UriTemplate = "/POST/PersonPost", Method = "POST", BodyStyle =           WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
  public Person InsertPerson(Person person)
  {
      Debug.WriteLine("POST:[PersonId = {0} PersonName = {1}]", person.Id, person.Name);
             return new Person(person.Id, person.Name);
  }

}
[DataContract]
public class Person
{
    [DataMember]
    private string id;
    [DataMember]
    private string name;

    public Person(string id, string name)
    {
        this.id = id;
        this.name = name;
    }

    public string Id { get; set; }
    public string Name { get; set; }

    public override string ToString()
    {
        var json = JsonConvert.SerializeObject(this);
        return json.ToString();
    }
}

这是客户端:

$.ajax({
  type: "POST",
  data: { "id": "Mehrere ;;; trennen", "name": "GetPerson" },
  contentType: "application/json; charset=utf-8",
  dataType: "jsonp",
  processData: false,
  crossDomain: true,
  url: "http://localhost:59291/Person/POST/PersonPost",
  success: function (data) {
    alert("Post erfolgreich: ");
  },
  error: function (xhr, ajaxOptions, thrownError) {
    alert("Fehler Post: Status " + xhr.status + " AntwortText " + xhr.responseText);
  }
});

我得到 HTTP 代码 200。这还不错吧?但是有人可以告诉我,我怎样才能访问 jQuery 客户端发送到 WCF 服务的数据???

谢谢

4

2 回答 2

0
  1. 你的 JSON 数据对我来说有点奇怪。我不是 JSON 专家。但如果我要写它,我会有类似的东西:

    var body = '{"person":{';
    body = body + '"id":"' + '"abc123"' + '",'
    body = body + '"name":"' + '"john"' + '"'
    body = body + '}}'; 
    

然后将“data:”值设置为等于“body”变量

            dataType: "json",
            data: body,

注意,这样我可以添加一个调试行

alert(body);

在代码中(在我创建它之后)查看数据(在我通过请求发送它之前)。

…………

第二。

在这里查看我的旧对话:

WCF REST 服务中的 CORS 支持

为什么?

因为我遇到了一些问题,当你遇到

"http://localhost:59291/"

触发了那段记忆。

于 2013-03-21T13:41:16.963 回答
0

如果您使用 jsonp 数据类型,则必须在返回数据时处理 json 回调...

jsonCallback(Your json response goes here);

前任:

      jsonCallback(
    {
        "sites":
        [
            {
                "siteName": "JQUERY4U",
                "domainName": "http://www.jquery4u.com",
                "description": "#1 jQuery Blog for your Daily News, Plugins, Tuts/Tips & Code Snippets."
            },
            {
                "siteName": "BLOGOOLA",
                "domainName": "http://www.blogoola.com",
                "description": "Expose your blog to millions and increase your audience."
            },
            {
                "siteName": "PHPSCRIPTS4U",
                "domainName": "http://www.phpscripts4u.com",
                "description": "The Blog of Enthusiastic PHP Scripters"
            }
        ]
    }
);
于 2013-03-21T13:11:11.907 回答