刚开始的时候使用asp的updatepanel控件实现局部刷新,而且在本地运行正确,但是部署到服务器上就变成整个页面全部刷新了。服务器用的是Windows server2000,本地机子上用的是win7,没有找到解决办法,最后改用ajax实现,本地和服务器都完美实现局部刷新效果。
前台代码:
$(".textBox").change(function () {
var companyName;
companyName = $(".textBox_company").val();
$.ajax({
type: "Post",
contentType: "application/json;charset=utf-8",
url: "Receiving.aspx/getCompanyEmail",
data: "{'companyName':'" + companyName + "'}",
dataType: 'json',
success: function (result) {
$(".txt_ReceiverEmail").val(result.d);
$(".txt_Email").val(result.d);
},
error: function (err) {
}
})
})
注意:
1.url中getCompanyEmial是后台的具体需要访问的方法。
2.传输参数的格式是:'data':'data'。形参和实参值都需要用引号包起来,尤其是实参是变量的时候如代码中所示,要注意加上引号。
3.形参名字需要和后台的形参名的名字一致,个数一致,前后台都为string类型。
后台代码:
[System.Web.Services.WebMethod]
public static string getCompanyEmail(string companyName)
{
string result = "";
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonResult = serializer.Serialize(result);
//return jsonResult;//包装成json返回
return result; }
注意:
1.一定要在方法前加上[System.Web.Services.WebMethod]声明,不然会执行不到后台代码。
2.返回json只需要两句代码:
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonResult = serializer.Serialize(result);
3.不包装成json格式仍然可以正确返回,把结果包装成json之后,会把整个结果包装成字符串返回,如result = null,如果包装成json则返回的变成字符串:"null"。