0

我编写了这个 java 脚本来将 json 对象发送到 c# web 服务。但它不起作用..为什么会这样?这是我的javascript..

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery- 1.5.1.js"></script>

<script type="text/javascript">
     function BindJson() {

 document.getElementById("demo").innerHTML=Date();
        $.ajax({
            type: "POST",
            url: "Service1.asmx/SerializeJson",
            data: JSON.stringify({ person:{ firstName: "Denny" }}),

            contentType: "application/json; charset=utf-8",
            dataType: "json",

            success: function (data2) {
              alert(data2.d);
            },
            error: function (request, status, errorThrown) {
                alert(status);
            }
        }); 
   } 
</script>

这是我的服务器类..

 [System.Web.Script.Services.ScriptService]
 public class Service1 : System.Web.Services.WebService
 {
    [WebMethod]
    public string SerializeJson(Person person)
    {
        return "Success";
    }
    public class Person
    {
        public string firstName { get; set; }   
    }   
 }
4

2 回答 2

1

您不应该使用 JSON.stringify,因为当您指定 JSON 的内容类型时,jQuery 将使用 JSON.stringify 对其进行转换。

        data: JSON.stringify({ person:{ firstName: "Denny" }}),

        contentType: "application/json; charset=utf-8",
        dataType: "json",

将其更改为

        data: { person:{ firstName: "Denny" }},

        contentType: "application/json; charset=utf-8",
        dataType: "json",

此外,除非需要,否则您不需要将人员作为对象的成员发送。

        data: { firstName: "Denny"},

        contentType: "application/json; charset=utf-8",
        dataType: "json",
于 2013-08-04T10:07:35.733 回答
0

data选项.ajax期望名称值对字符串或对象

data: { "myjson": JSON.stringify({ person:{ firstName: "Denny" }}) },
//OR
data: "myjson="+JSON.stringify({ person:{ firstName: "Denny" }}),
//Or just send the data values and retrieve in the way you get GET or POST variables in C#
data: { person:{ firstName: "Denny" }},
于 2013-08-04T10:05:20.300 回答