【200分】jquey ajax +asp.net 一般处理程序(ashx)
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登录</title>
<link href="Content/login.css" rel="stylesheet" type="text/css" />
<link type="text/css" href="jqueryui/css/smoothness/jquery-ui-1.8.20.custom.css" rel="stylesheet" />
<script type="text/javascript" src="Script/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var $username = $("#txt_username");
var $userpwd = $("#txt_userpwd");
var $logincode = $("#logincode");
var $info = $("#lbl_info");
var $remeberpwd = $(":checkbox[name='remeberpwd']").attr("checked") == true ? "1" : "0";
$("#btn_login").click(function () {
if (checkinput() == true) {
$.ajax({
type: "post",
url: "ajax/MyLoginHandler.ashx",
data: "{'username':'" + $username.val() + "','userpwd':'" + $userpwd.val() + "','remeberpwd':'" + $remeberpwd + "','logincode':'" + $logincode.val() + "'}",
success: function (msg) {
alert(1);
},
error: function () {
alert(2);
// showvalidatecode();
}
});
}
return false;
});
$("#getcode_img").click(function () {
showvalidatecode();
});
function showvalidatecode() {
$("#getcode_img").attr("src", "Control/validate.aspx");
};
function checkinput() {
if ($username.val().length == 0) {
$info.text("用户名为空");
return false;
}
if ($userpwd.val().length == 0) {
$info.text("密码为空");
return false;
}
//加上js正则
return true;
};
});
</script>
</head>
public class MyLoginHandler : IHttpHandler,IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
string username = context.Request.Form["username"];
string userpwd = context.Request.Form["userpwd"];
string remeberpwd =context.Request.Form["remeberpwd"];
string logincode = context.Request.Form["logincode"];
if (logincode == context.Session["logincodenum"].ToString())
{
if (new LoginHandler().ValidateUser(username, userpwd))
{
if (remeberpwd == "1")
{
}
context.Response.Write("3" + "|登陆成功,进行跳转");
}
else
{
context.Response.Write("2" + "|用户名或密码错误");
}
}
else
{
context.Response.Write("1" + "|验证码错误");
}
}
实在找不出为什么错了 200分吧! 求助
[解决办法]
先用浏览器插件跟踪一下xhr的请求。
[解决办法]
首先保证 url: "ajax/MyLoginHandler.ashx",路径正确
[解决办法]
data: "{'username':'" + $username.val() + "','userpwd':'" + $userpwd.val() + "','remeberpwd':'" + $remeberpwd + "','logincode':'" + $logincode.val() + "'}",这么做是不行滴,请参考:
data: "co="+$.trim(str.val())+"&wd="+$.trim(pwd.val())+"&kp="+keepPW+"&type=usual&way="+$("#hidtype").val()+"&acDate="+(new Date().getTime()),[解决办法]
data: "{username:$username.val(),userpwd:'" + $userpwd.val() + "','remeberpwd':'" + $remeberpwd + "','logincode':'" + $logincode.val() + "'}",
红色部分都不要单引号
[解决办法]
按照你那样来得指定为json格式才行
[解决办法]
其实这样写更清晰,我只写了一个
data: "{username:$.trim($("#txt_username").val())}",
[解决办法]
其实是要把data后面所有的双引号去掉。
[解决办法]
data: {"username":$username.val(),"userpwd":$userpwd.val(),"remeberpwd":$remeberpwd.val(),"logincode":$logincode.val()}
[解决办法]
jQuery.post(url, { "sm": sm }, function (data){});
这个是简单的用法
[解决办法]
试着在 jquery ajax的error 那里这样写:
error: function (a, s, d) {
alert(s + " " + d);
}
看看弹出来的是什么错误
[解决办法]
$.post(url, $(#form1).serialize(), callback, datatype);
用post试试 不用拼写表单元素 直接提交表单...
看你这问题猜是 ajax data数据的问题
[解决办法]
data格式错了。
data:{"username":$username.val(),"userpwd":$userpwd.val(),"remeberpwd":$remeberpwd.val(),"logincode":$logincode.val()}
[解决办法]
既然断点都进去了,那么ashx的路径应该是没问题的
估计就像LS说的 是参数格式的问题
data:{"key1":value1,"key2":value2} 这样的方式写
就是19L的写法
LZ可以去用Firbug调试一下,看看在请求过去的URL上面有没有带着 参数,还有看下参数的格式是否正确
[解决办法]
跟踪看下数据发送的情况
[解决办法]
string username=context.Request["username"]==null?"":context.Request["username"].ToString();
试一试这个。
还有你的html代码没贴出来
[解决办法]
把datatype 和contentType加上试试
[解决办法]
我在webservice里面是必须要加datatype和contentType的
[解决办法]
url: "GetZyName.aspx",
type: "GET",
data: { zyid: zyid , zyname:zyname},
datatype: "json",
success: function(data, status) {
}
data的格式写成上面的格式,设置断点或alert看前台要传递的数据有没有取到!
ashx中没有取得数据应该是前台提交的时候没有提交成功数据!!
ashx中取数据写成:context.Request.QueryString["zyid"]试试!
[解决办法]
上面已经说得很明显了,
data: "{'username':'" + $username.val() + "','userpwd':'" + $userpwd.val() + "'
把多余引号去掉
data: {'username' : $username.val(),'userpwd': $userpwd.val()}
[解决办法]
ajax/MyLoginHandler.ashx。
Hander页面返回值了没有???
[解决办法]
遇到楼主同样的问题
首先把大括号外面的引号要去掉
换成直接用jquery的post方法就能正常提交取到
用ajax就不行