在这里,我正在使用网络方法’InsertData’.我可以传递查询字符串[“ json.aspx / InsertData?username =” name“ ……”]之类的参数,而不作为数据传递吗?如果使用类似查询字符串的方法,有什么好处吗?
$.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");
}
});
解决方法:
我在考虑2种破坏:
>如果使用查询字符串传递数据,则该数据在浏览器URL中可见
>根据Web服务器的不同,URL有一些长度限制,因此,如果在URL中放入大量数据,服务器可能会拒绝您的请求.如果“请求限制”超出URL的长度,则IIS返回404.14.
要将查询字符串传递给Webmethod,请执行以下操作:
>您必须使用查询字符串参数设置URL
>您必须在服务器端获取此参数,才能从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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。