我的应用程序上有两个aspx页面。从第一个开始,让我们说default.aspx,我有一个按钮和一个文本框。当我点击按钮时,我会对checkname.aspx进行ajax调用,如下所示
function docheck() {
var un = $('#username').val();
$.ajax({
url: "checkname.aspx",
data: { name: un, method: 'checkname' },
dataType: 'script',
success: function (val) {
if (val == "No")
alert("not valid");
else
alert("valid!");
}
});
}
从checkname.aspx页面我执行如下操作,但它的响应也是将checkname.aspx页面的html添加到响应中,因此ajax调用的成功消息不会成为我想要的。如何发送CheckName方法发送的内容。
checkname.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
NameValueCollection queries = HttpUtility.ParseQueryString(Request.QueryString.ToString());
if(queries["method"] == "checkname")
this.CheckName(queries["name"]);
}
protected void CheckName(string Name)
{
if (Name == "ryu")
{
HttpContext.Current.Response.Write("No");
return;
}
HttpContext.Current.Response.Write("Yes");
}
提前致谢,
答案 0 :(得分:2)
请注意,这是处理Ajax请求的一种非常笨重的方法,因为该方法与它所在的页面无关。 (在Ajax上下文中,页面的整个控件层次结构都没有意义。)
我建议你考虑使用WCF,参见例如this tutorial
答案 1 :(得分:1)
调用HttpContext.Current.Response.End();
来结束处理你的aspx请求,否则,在Page_Load中调用之后的所有内容都会得到正常处理,因此你得到了你所描述的结果。
但总的来说,请遵循其他人提供的建议,并以不同的方式处理您的AJAX请求。