【问题标题】:Javascript json object and wcf webservice bad requestJavascript json 对象和 wcf webservice 错误请求
【发布时间】:2013-07-13 23:16:52
【问题描述】:

我已经成功使用wcf webservices做了一些简单的操作。现在我正在尝试使用 jquery ajax post 传递一个更复杂的对象,但这次我总是遇到同样的错误(错误请求)。查了很多,还是没找到问题

这是我想要做的:

我的界面

[OperationContract(Name = "PersonAddress")]
[WebInvoke(UriTemplate = "AddPersonAddress/", Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
PersonAddress AddPersonAddress(PersonAddress objPA);

我的 Javascript 测试代码:

var testObj = {
      cpostal: "Postal 1",
      address: "My address",
      zone:""
}

var objectAsJson = JSON.stringify({ objPA: testObj });

$.post('../../App_Services/DataService.svc/PersonAddress/', objectAsJson, function (data) {
      alert("success");
});

PersonAddress结构

public class PersonAddress
{
    public string cpostal { get; set; }
    public string address { get; set; }
    public string zone { get; set; }
}

Chrome 控制台帖子

{"objP":{"cpostal":"Postal 1","address": "My address","zone":""}}

根据这些文章:

Link 1 Link 2

我必须发送一个字符串,它是一个 JS 对象的 JSON 表示,其属性与我正在调用的函数的参数名称相匹配。

【问题讨论】:

  • 为什么要使用成功回调+.done
  • Person的结构是什么?您还在 testObj 中将地址拼写为“addess”。
  • 尝试在服务器端开启追踪;跟踪应该说明为什么服务器认为请求是错误的。
  • @Edward addess 只是一个大错字:)。我解决了这个问题,但问题仍然存在。我将发布结构
  • @Johan 只是 jquery docs for ajax post 的示例代码。请忽略那部分。

标签: c# jquery json wcf web-services


【解决方案1】:

我建议更改以下行:

var objectAsJson = JSON.stringify({ PersonAddress: testObj });// This is adding a property "PersonAddress" to the object

var objectAsJson = JSON.stringify(testObj);// this is PersonAddress object itself

【讨论】:

  • 感谢您的回复,但不幸的是它不起作用。我用新信息编辑了帖子。
【解决方案2】:

在拉了很多头发之后:) 终于设法让它工作了。 基本上必须使用完整形式的$。 ajax 而不是 $. post,以指示内容类型“application / json; charset = utf-8”。现在可以在没有意识到为什么会发生这种情况的情况下工作。感谢所有试图提供帮助的人

适合我的代码

    $.ajax({
        type: "POST",
        url: "../../App_Services/DataService.svc/PersonAddress",
        data: objectAsJson,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
       // processdata: true,
        success: function (data) {
            alert("ok")
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多