ajax中的post方法中回调函数不执行的问题

  前一段时间接触了JQuery Ajax中的.post()方法和.get()方法,感觉到ajax的简洁和强大,当用到.post()方法时,去W3上查找相关的使用方法,感觉十分简单,用法很明了,然后,直接根据自己的需要(js将数据post给php写入数据库,然后返回给js一个值)开写了,写完了,运行,竟然不行!然后仔细地对比我的代码和demo的不同,为了查找错误,将我的代码写的几乎和demo相同了,但是还是无法在js中获得php的数据。

  这里先回忆一下.post()方法。

  

jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
参数 描述
url 将请求发送到的url
data 发送的数据(可选)
success(data, textStatus, jqXHR)
执行成功后的回调函数,参数均可选,data是返回的数据,

textStatus是函数的状态,也可以加入jqXHR得到函数

的返回状态

dataType 预期的服务器相应的数据类型

  经过仔细的对比,发现js的代码已经不能再改了,然后我开始看php的代码,发现,跟网上唯一不同的是,我增加了一个插入数据库的操作,难道是这个的原因?我把连接数据库、插入数据库的操作通通注释掉了以后,成功了~~~(必然啊,跟网上的demo不能再一样了)。

  这是为什么呢,然后开始在网上查资料,突然看到了post()函数的时间问题,大体意思是,当我url连接到插入数据库的php界面时,需要一定的执行时间插入数据库,当我的click函数执行了,刷新了之后,回调函数还没有机会执行post就完成了,所以无论我怎么刷新都没变化。

  

$.ajax({url:c_url,
       timeout:3000,
      success: function(data){alert("aaa");}
      });

  加入超时限制,测试之后,发现function也是能执行的,很明显是超时的问题。插入数据库拖慢了post执行成功回调的时间,于是,我将连接数据库和插入数据库单独加入一个新建的php页面,然后,可以得到数据了。

  这是我最后的js代码:

 1 $(document).ready(function(){
 2                      $("a").click(function(){
 3                             var c_url = ‘http://localhost/test/check.php‘;
 4                             var jj;
 5                             $.post("db.php",{id:"5"});
 6                             $.post("check.php",{},function(data){jj=data;$("#tname").html(data);}).success(function() { alert("second success"); })
 7                     .error(function(a) { alert("error"+a.ResponseText);alert(json_last_error ()); })
 8                     .complete(function() { alert("complete"); });
 9                                           $("#tname").html(data);
10                                          });
11
12                           });

  其中,check.php只有单独定义的一个数组返回用于测试是否收到。

  至此,算是结束了,不过这样执行,html方法改变了标签内容,但是在页面上显示一下就突然刷新没了,还没有解决。希望各位大神指点~

  第一次接触ajax就碰上了这样的问题,以后还是要系统地学一下。

时间: 2024-08-28 10:30:22

ajax中的post方法中回调函数不执行的问题的相关文章

android中出现的多处回调函数

回调函数的概念 android中出现的多处回调函数,比如去override 一些函数 OnCreate等等 http://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html android中出现的多处回调函数,布布扣,bubuko.com

Jquery ajax回调函数不执行

ajax如下: $.post( "${pageContext.request.contextPath}/deptHead_assign.action", {"studentId":student.id,"subjectId":selectedRows[0].subjectId}, function(result){ alert(result.num); $.messager.alert("系统提示","落选学生<

$.getJSON() 回调函数没有执行的原因

$.getJSON() 方法使用 AJAX 的 HTTP GET 请求获取 JSON 数据. 语法 $.getJSON(url,data,success(data,status,xhr)) url必填规定请求发送到那个url: data可选规定发送到服务器的数据: success可选data包含服务器返回的数据, status包含请求的状态,("success"."notmodified"."error"."timeout".

getJSON回调函数不执行问题?

利用getJSON异步请求时,回调函数不执行,不知道是什么问题? php 返回数据 header("Content-type:text/json"); echo json_encode(array("href"=>"car.php","status"=>"ok")); 不知怎么回事,alert都不执行! getJSON("car.php",{act:"insert&

JavaScript ES7 中使用 async/await 解决回调函数嵌套问题

原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中,因为与服务器通讯是一种比较昂贵的操作,因此比较复杂的业务逻辑往往都放在服务器端,前端 JavaScript 只需要少数几次 AJAX 请求就可拿到全部数据. 但是到了 webapp 风行的时代,前端业务逻辑越来越复杂,往往几个 AJAX 请求之间互有依赖,有些请求依赖前面请求的数据,有些请求需要并行

extjs中组件监听器里面的回调函数说明

近期在看项目源代码的时候发现了例如以下代码,当中_searchSupplierStore是JsonStore对象 _searchSupplierStore.on('beforeload',function(thiz,options){ thiz.baseParams["cusCode"]="%"+Ext.getCmp('id_cusCodetext').getValue()+"%"; thiz.baseParams["cusType&q

cocos2dx中的假动作,又称动作回调函数

1.动作与动画的区别 动作是:定时器+属性的改变,是帧循环的累积效应 动画是:帧图片的播放效果,我们知道电影的播放就是快速播放的胶片,这就是动画的原理 2.假动作:又称动作回调函数 四大类假动作: callfunc_selector()        对应的回调函数是:void funcCallBack(); callfuncN_selector()      对应的回调函数是:void funcNCallBack(CCNode *node); callFuncND_selector()   对

ajax提交数据,回调函数不执行或总是执行error回调函数的问题

jsp页面: <form id="itemAddForm" class="itemForm" method="post"> <div id="tab1" class="tabcontent"> <div class="form"> <div class="form_row"> <label><b>

详解SpringMVC中Controller的方法中参数的工作原理

前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html SpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非常灵活.本文将分析SpringMVC是如何对这些参数进行处理的,