【编程笔记】jquery中的ajax的回调函数不能执行

最近在用jquery的写了一些ajax功能,开始比较顺利,但昨天遇到了一个奇特的问题。jquery的ajax回调函数不能执行了。

功能描述,实现头像的剪切。在前台用一个drag,然后点击保存,通过ajax发送选择的坐标,实现剪切保存,并返回保存结

束是否成功。

下面是我的代码:

ContractedBlock.gif ExpandedBlockStart.gif View Code
1 /* 方案一 */
2 $.post(
3   " index/resizeandcrop " ,
4 { selectorX:$x,selectorY:$y,jdnew:$ new },
5   function (data) {},
6   " json "
7 );
8 /* 方案二 */
9 $.post(
10 " index/resizeandcrop " ,
11 { selectorX:$x,selectorY:$y,jdnew:$ new },
12 function (data){alert( " Data Loaded: " + data);},
13 " json "
14 );
15 /* 方案三 */
16 $.ajax({ type: ' POST ' ,
17 url: URL + " index/resizeandcrop " ,
18 data:{ selectorX:$x,selectorY:$y,jdnew:$ new },
19 success: function (data){},
20 dataType: " json "
21 });

方案一:是我的原始代码,能发送坐标,在后台也能剪切和保存,也能返回数据,返回数据是一个succes,但是就是不调用回调

函数。

初步判断是我的语句有问题,于是进过和再三检查,也没发现哪有错了,下面就在尝试一下其他的两个ajax方法,于是有了方案二

和方案三。

方案二三:这两个都是jquery中ajax的不同写法了(自己认识)。但是还是同样的问题,能执行,回复也有,但是就是不执行回调

函数,纠结了很久,没有结果。那语法和写法都应该没问题。

下面就是怀疑是header中的参数不全了,于是拿了两个能完全正确的ajax对比了一下,发现头部文件中也是相同,唯一一个区别就

是Accept: application/json, text/javascript, */*中少了一个  q=1.0

后面还是没解决,下面就准备尝试一下原生的js和换一个后台页面在查查错了。

     2011-5-2 放完假,现在查错,加入代码:

ContractedBlock.gif ExpandedBlockStart.gif View Code
1 $.ajax({
2 type: ' POST ' ,
3 url: URL + " index/resizeandcrop " ,
4 data:{ selectorX:$x,selectorY:$y,jdnew:$ new },
5 success: function (data){alert(data);},
6 error: function (){alert(arguments[ 1 ]);},
7 dataType: " json "
8 });

现在返回了一个错误:parsererror ,查找后是编码的问题在后面加上header('Content-type: text/html; charset=utf-8');就没问题了,注意是utf-8,如果是utf8则firefox没问题,ie会出问题的。

后面的发现,其实这里的原因是返回的json不严格echo "{'re':'success'}";jquery不能解析造成的报错,后面改为 echo "{\"re\":\"success\"}";就没有错误了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值