请教为何ajax不执行success。用complete也不执行!$.ajax({type: post,url: jsp/loginManager.jsp,data:
请教为何ajax不执行success。用complete也不执行!
$.ajax({
type: "post",
url: "jsp/loginManager.jsp",
data: "name=" + $('#rname').attr('value') + "&pwd=" + $('#pwd').attr('value'),
dataType: "text",
success: function(data) {
alert(data);
}
});
点击登陆,成功连接数据库并且查询到了值(在loginManager.jsp页面有用System.out.print()打印过查询到的值)。但success里的东西不执行。用过断点,当执行完dataType后,success直接跳出,里面的alert()不执行,请指教这是为什么?
[最优解释]这说明之前数据库有被传上去,
一般是$.ajax这一步内有错,ajax没有到post这一步就错了
你可以在loginManager.jsp中做个日志看是否得到 提交的数据
如果 与form有关的话,请看看你的input用的是id还是name
一般用#的时候,请用id
[其他解释]
loginManager.jsp不要实现跳转,你是不是跳转了.只需要用out输出数据就可以了
out.print(data);//就是客户端要的数据
[其他解释]应该是你跳转了吧。你不要跳转了。如果用form表单的话。
[其他解释]async:false
[其他解释]你用的是异步提交,没等验证成功的时候已经执行了按钮的提交事件,所以页面已经刷新
改成同步提交,按钮的提交事件必须等ajax验证结束后判断是否进行提交
[其他解释] success: function(data) {
alert(data);
}
error: function(e) {
alert(e);
}
看看什么错误
[其他解释]error也不会执行,直接跳过了
[其他解释]$.ajax({
type: "post",
url: "jsp/loginManager.jsp",
async: true,
data: "name=" + $('#rname').attr('value') + "&pwd=" + $('#pwd').attr('value'),
dataType: "text",
success: function(data) {
alert(data);
},
error: function(e) {
alert(e);
}
});
这样呢?
[其他解释]为啥呀????????还是一样,没反应,只是把登陆页面刷新了!!!!!!!!!
[其他解释]还会刷新页面的。。。
[其他解释] 开始把数据装在form表单里,现在把form去掉了,success会执行了!这是为什么呀?
[其他解释]呃,先前说过了。数据是得到了的。在manager页面有打印出来。
[其他解释]没搞jsp的路过
[其他解释]按楼主这样说,还真是有点诡异
[其他解释]问题不明确,请贴出调用代码!
[其他解释]楼主改个方式试试看
data: "name=" + $('#rname').attr('value') + "&pwd=" + $('#pwd').attr('value'),
data:{name:$('#rname').val(),pwd:$('#pwd).val()}
[其他解释]呵呵,我也遇到了,受到启发,原来我是a链接里面有href,开始,href="",所以刷新了页面,刷新页面前进入了action,所以也获得了提交数据,但是还没来得及返回,就刷新了。改成href="#"就ok了
<a href='#' onclick= 'delMenuContent(cellvalue)>....
[其他解释]虽然帖子老了点,但为了以后或许有人看,在这提供一种解决办法:
把dataType这个属性注释掉,alert返回的数据。原来是后台程序某处之前调试时echo了一些字符,这就破坏了返回浏览器的json格式,可能这样就触发不了success方法。
方法来自于:
http://hi.baidu.com/windzoone/blog/item/2f30521fdb6e7900314e152d.html
[其他解释]我的问题与zxn5211314描述的类似 ,已用这种方法解决
因为我用div弹出的窗口里使用ajax然而却异步调用了
//模拟点击关闭按钮的点击超链接
$(parent.window.document.body).find("a[role=button]").get(0).click();
所以不行 async:false解决