这里我使用的是web方法'InsertData'。我可以传递查询string["json.aspx/InsertData?username="+name+"......"]
等参数,而不是传递给data
吗?如果我使用像查询字符串那么有什么好处。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "json.aspx/InsertData",
data: "{'username':'" + name + "','subj':'" + subject + "','desc':'" + body + "'}",
dataType: "json",
success: function(data) {
var obj = data.d;
if (obj == 'true') {
$('#txtname').val('');
$('#txtsubject').val('');
$('#txtbody').val('');
$('#lblmsg').html("Details Submitted Successfully");
}
},
error: function(result) {
alert("Error");
}
});
答案 0 :(得分:4)
我正在考虑两种不满:
Request Limits
超过URL的长度,IIS将返回404.14。要将查询字符串传递给Webmethod,请执行以下操作:
您必须使用查询字符串参数
您必须在服务器端获取此参数,以便从Request
对象获取它们。
客户端
var url = "json.aspx/InsertData?username=" + name + "&subj=" + subject + "&desc=" + body;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: url,
dataType: "json",
success: function(data) {
var obj = data.d;
if (obj == 'true') {
$('#txtname').val('');
$('#txtsubject').val('');
$('#txtbody').val('');
$('#lblmsg').html("Details Submitted Successfully");
}
},
error: function(result) {
alert("Error");
}
});
在服务器端,您必须检查Request
对象:
[WebMethod(EnableSession=true)]
public static object InsertData()
{
var name = HttpContext.Current.Request.QueryString["username"];
var subject = HttpContext.Current.Request.QueryString["subject"];
var desc = HttpContext.Current.Request.QueryString["desc"];
// Do some work
}