前一段时间接触了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代码:

 $(document).ready(function(){
$("a").click(function(){
var c_url = 'http://localhost/test/check.php';
var jj;
$.post("db.php",{id:"5"});
$.post("check.php",{},function(data){jj=data;$("#tname").html(data);}).success(function() { alert("second success"); })
.error(function(a) { alert("error"+a.ResponseText);alert(json_last_error ()); })
.complete(function() { alert("complete"); });
$("#tname").html(data);
}); });

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

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

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

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

  1. $.getJSON('url',function(data){}) 中回调函数不执行

    $.getJSON('url',function(data){}) 中回调函数不执行 url 中的 json 格式不正确 ,浏览器返回并没有报错 {'湖北':[114.11438,30.849429] ...

  2. array_reduce方法用回调函数迭代地将对数组的值进行操作

    在处理php数组的时候,有一种需求特别的频繁,如下二维数组: $arr = array( 1=>array( 'id' => 5, 'name' => '张三' ), 2=>a ...

  3. setInterval调用ajax回调函数不执行的问题

    setInterval调用ajax回调函数不执行 1.首先检查你的setInterval()函数写法是否正确 参考写法 // 检查是否支付成功 var isPayRequest=false; var ...

  4. Jquery ajax回调函数不执行

    ajax如下: $.post( "${pageContext.request.contextPath}/deptHead_assign.action", {"studen ...

  5. 为什么局部内部类中访问同一方法中的变量,该变量一定要是final修饰的

     最近有一个疑惑:为什么局部内部类中访问同一方法中的变量,该变量一定要是final修饰的         首先,我们看一个局部内部类的例子:             class OutClass {  ...

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

    $.getJSON() 方法使用 AJAX 的 HTTP GET 请求获取 JSON 数据. 语法 $.getJSON(url,data,success(data,status,xhr)) url必填 ...

  7. getJSON回调函数不执行问题?

    利用getJSON异步请求时,回调函数不执行,不知道是什么问题? php 返回数据 header("Content-type:text/json"); echo json_enco ...

  8. scrapy yield 回调函数不执行解决方案

    yield Request(url=parse.urljoin(response.url, p_url),callback=self.parse_detail) 回调函数不执行: 加上: dont_f ...

  9. 详解C#中通过委托来实现回调函数功能的方法

    委托:类型安全的指向函数的指针 使用步骤 1:声明一个委托 delegate string DelString(string s) 2:定义一个委托变量 DelString del = new Del ...

随机推荐

  1. Android之Handler探索

    Handler背景理解: Handler被最多的使用在了更新UI线程中,但是,这个方法具体是什么样的呢?我在这篇博文中先领着大家认识一下什么是handler以及它是怎么样使用在程序中,起着什么样的作用 ...

  2. PHP代码加密 -- php_strip_whitespace函数,去掉源代码所有注释和空格并显示在一行

    <?php function stripCommentAndWhitespace($path = '') { if (empty($path)) { echo '请指定要操作的文件路径'; re ...

  3. SQL in与exists相关性能问题总结

    SQL  in与exists相关性能问题总结 in 和 exists in 和 exists的是DBA或开发人员日常工作学习中常用的基本运算符,今天我就这两个所带来的性能问题进行分析总结,方便自己与他 ...

  4. BZOJ 2962

    2962: 序列操作 Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 618  Solved: 225[Submit][Status][Discuss] ...

  5. StringBuilder 类

    表示可变字符字符串.无法继承此类. 此类表示值为可变字符序列的类似字符串的对象.之所以说值是可变的,是因为在通过追加.移除.替换或插入字符而创建它后可以对它进行修改.有关比较,请参见 String 类 ...

  6. Servlet & JSP - Form-based Authentication

    基本认证和摘要认证都只能使用浏览器自带的登录框而不能使用自定义的登录页面.如果必须使用自定义的登录页面,则可以选择基于表框的认证方式. 基于表框的认证的配置与基本认证和摘要认证的差别在于部署描述符中  ...

  7. MyBatis(3.2.3) - One-to-one mapping using nested Select

    We can get Student along with the Address details using a nested Select query as follows: <result ...

  8. HTTP - 条件请求

    当 HTTP 请求包含 If-XXX 这种样式的首部时,服务器会对附带的条件进行判断,只有判断指定条件为真,才会执行请求.这样的请求首部有五个,分别是 If-Modified-Since.If-Unm ...

  9. Android之布局

    Android中的布局分为六种,分别是相对布局.线性布局.表格布局.网格布局.帧布局.绝对布局,良好的布局设计对UI界面至关重要,下面先来看看先相对布局. 相对布局(RelativeLayout): ...

  10. 【Android学习】调用系统相机

    Android调用系统相机分三步走: 首先是要设置调用相机的权限. 其次是给按钮加打开相机的事件. 最后是拍照后进行图片的保存. 第一步,添加权限: <!-- 调用系统相机 --> < ...