首页 新闻 会员 周边 捐助

ajax不执行回调函数

0
悬赏园豆:5 [已解决问题] 解决于 2014-03-27 15:30

按回车键调用一方法,里面的ajax不执行回调函数,不管是success还是error都不执行,普通的按钮调用那个方法一切正常。费解!

xyq_雨晴的主页 xyq_雨晴 | 初学一级 | 园豆:159
提问于:2014-03-26 13:55
< >
分享
最佳答案
0

你回车是不是用来做别的事情了, 

比如submit form什么的。

收获园豆:5
undefined | 小虾三级 |园豆:898 | 2014-03-26 14:11

额~~ 刚刚才发现 确实是默认来提交表单的~~。设置这个event.preventDefault();好像也不行。还是进不去回调函数,求指教~~

xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-26 14:38

@xyq_雨晴: 监视网络, 把服务器返回的东西也发过来看下。 搞不好返回来的数据不对, 解析错了呢。

undefined | 园豆:898 (小虾三级) | 2014-03-26 15:46

@undefined: 返回的数据如果有问题,那我普通的按钮调用时肯定也不能用,但是我普通的按钮调用执行是正常的。刚刚终于解决了。但还是有点不太理解为什么,网上说如果表单上只有一个文本框的时候enter键会默认带提交功能。我加了个文本框影藏起来  相当于把enter键的提交功能去掉以后,就正常了,不知道为什么他的提交功能会影响回调函数的触发。

xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-26 15:50

@xyq_雨晴: 怀疑你页面回发了。 这样ajax回来的时候页面都不在了。 

undefined | 园豆:898 (小虾三级) | 2014-03-26 16:18

@undefined: 我做那个ajax的功能是需要把选中的那个文本框的值更新到数据库里,返回操作结果。之前错误的结果是:数据库更新了,但是界面上显示的还是旧的数据。这是不是意味着enter提交表单没成功呢?

xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-26 16:25

@xyq_雨晴: 我认为可能刚好想法吧。 可能是这么个顺序:提交表单->ajax开始提交->提交表单成功,刷新页面, 取到了旧的数据->ajax把数据库更新完毕了->ajax返回,可是它所在的页面不在了。

 

这样就和你的观测一致了。 

undefined | 园豆:898 (小虾三级) | 2014-03-26 18:14

@undefined: 之前没打断点到page_load里面去,刚刚测了下,确实是调用ajax以后  调到了page_load里面执行了以后,再执行ajax目标页面的代码。但是我Page_Load里面没有可执行的代码,他会自动刷新页面?

protected void Page_Load(object sender, EventArgs e)
{
this.GradeType = RequestHelper.GetQueryString("GradeType").Trim();
if (!IsPostBack)
{
getGradeType();
getBasicGradeInfo(GradeType); ;
}

}

xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-27 13:16

@xyq_雨晴: 因为form被submit了吗。 page_load都进去了,有没有代码不重要了。 

undefined | 园豆:898 (小虾三级) | 2014-03-27 14:40

@undefined: 嗯,谢谢您了~~

xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-27 15:30
其他回答(3)
0

先看下请求有没发出去

吴瑞祥 | 园豆:29449 (高人七级) | 2014-03-26 13:56

发出去了,目标页面的代码也执行了,没报异常,执行完了就直接回到页面 没有执行我回调函数里的代码了~~不知道怎么回事  普通的按钮调用同样的那个方法 没一点问题!

支持(0) 反对(0) xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-26 13:58

@xyq_雨晴: 执不执行要打断点看.你先把发请求的代码发上来吧

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-03-26 13:59

@吴瑞祥: 

$.ajax({
type: "POST",
url: $("#ScoreInfoTable").attr("EditScoreUrl"),
dataType: 'html',
data: { GradeID: GradeID, LowerLimit: LowerLimit, UpperLimit: UpperLimit },
success: function (data) {
debugger;
if (data == "true") {
var text = $("#selTxt").val();
var currentTd = $("#selTxt").parent()[0];
currentTd.innerText = "";
$("#selTxt").remove();
currentTd.innerText = parseFloat(text).toFixed(5);
}
else {
alert("更新失败");
}
},
error: function (xhr) {debugger; alert('发生错误:' + xhr.responseText); }
});

这个是ajax请求

目标页面可以获取值:string GradeID = RequestHelper.GetString("GradeID");

执行完:

if (BLL.UpdateBasicGrade(Model) > 0)
{
context.Response.Write("true");
} 就直接到了页面,应该是需要进入success里面的,弄个debugger都不管用~~

 

支持(0) 反对(0) xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-26 14:04
0

你把ajax的请求回调写全呢,success,error,complete

幻天芒 | 园豆:37207 (高人七级) | 2014-03-26 15:09

写全也没进去complete~~  不知道是不是默认enter键提交表单的缘故,

event.preventDefault();
event.returnValue = false; 设置这些都不起作用。

支持(0) 反对(0) xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-26 15:15

现在解决了,谢谢哈~~

支持(0) 反对(0) xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-26 15:51

@xyq_雨晴: 应该不是ajax的问题吧~

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2014-03-26 23:05
0

从描述看,楼主没有发现问题的根源。原因不在于ajax,而在于按钮。

lucika.zh | 园豆:54 (初学一级) | 2014-03-26 15:50

刚刚终于解决了。但还是有点不太理解为什么,网上说如果表单上只有一个文本框的时候enter键会默认带提交功能。我加了个文本框影藏起来  相当于把enter键的提交功能去掉以后,就正常了,不知道为什么他的提交功能会影响回调函数的触发。

支持(0) 反对(0) xyq_雨晴 | 园豆:159 (初学一级) | 2014-03-26 15:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册