【发布时间】:2017-01-09 13:22:50
【问题描述】:
请看下面的 AJAX:
<script type="text/javascript" src="Javascript/json2.js"></script>
<script type="text/javascript" src="Javascript/jquery-1.11.1.min.js"></script>
<script type = "text/javascript">
function GetData() {
$.ajax({
type: "POST",
url: "JSONExample.aspx/GetPerson",
contentType: "application/json; charset=utf-8",
dataType: "text",
success: OnSuccess(),
//async: false,
failure: function (response) {
alert('there was an error counting possibles')
}
});
function OnSuccess() {
return function (response) {
alert(response);
window.location.href("JSONExample.aspx?id=" + response);
}
}
}
GetData()
</script>
以及下面的服务器端代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using Newtonsoft.Json;
namespace SerializeAndDeserializeJSON
{
//[Serializable]
public class Person
{
public String Name;
public int Age;
}
public partial class JSONExample : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if ((Request.QueryString["id"]== null)==false)
{
var json = Request.QueryString["id"];
var person = JsonConvert.DeserializeObject<Person>(json); //person is null
}
}
[System.Web.Services.WebMethod]
public static Person GetPerson()
{
Person p1 = new Person();
p1.Name = "Ian";
p1.Age=35;
return p1;
}
}
}
页面加载后Person对象的值如下:
名称:空 年龄:0
名字应该是 Ian,年龄应该是 35。我做错了什么?
【问题讨论】:
-
检查您的响应是否为空,将 dataType 更改为 json
-
OnSuccess函数内部的Json对象无效吗?
标签: c# json web-services