这里我使用网络方法“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");
}
});
我认为有两个缺点:
- 如果使用查询字符串传递数据,则数据在浏览器 URL 中可见
- URL 有一些长度限制,具体取决于 Web 服务器,因此如果您在 URL 中放入大量数据,服务器可能会拒绝您的请求。 IIS 返回 404.14 如果
Request Limits
超出了 URL 的长度。
要将查询字符串传递给 Webmethod,请执行以下操作:
客户端
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
object:
[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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)