jquery ajax回调函数不执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery ajax回调函数不执行相关的知识,希望对你有一定的参考价值。

这是js
$(function()
var ID = $("#license").html();
$("#driver").bind("change",function()
var select = $(this).val();
$.post("Vehicle!update_d?vehicle.staff.staffNo="+select+"&vehicle.license="+ID+""
,function(data,status)
alert(data);
$("#select").html(data);
);
);
);

这是action
public String update_d() throws Exception
String name = s_dao.findById(vehicle.getStaff().getStaffNo()).getStaffName();
return name;


现在的问题是当action中的返回值name为null时回调函数成功执行,即alert,但是
当name不为空时却不执行回调函数了,什么情况?

参考技术A 这是action 错误
public void update_d() throws Exception
String name = s_dao.findById(vehicle.getStaff().getStaffNo()).getStaffName();

ServletActionContext.getResponse().setContentType("text/javascript;charset=UTF-8");
PrintWriter out = ServletActionContext.getResponse().getWriter();
out.write(name );
本回答被提问者和网友采纳
参考技术B 那应该是action里面出错了
你断点试试!

jquery 使用ajax,正常返回后,不执行success的问题

背景:

       在使用到jQuery的ajax时,如果指定了dataType为json,老是不执行success回调,而是执行了error回调函数.

原因:

       然后继续下载了几个jquery版本,如1.3.2,1.4.0的,指定dataType为json都不能执行success回调,只有小于1.3版本的才能执行success回调。

      去jquery的网站找到了在线的api文档看了下,地址:http://api.jquery.com/jQuery.ajax/ ,发现dataType如下的说明 
  "json": Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.) 

  原来是jquery1.4版本以后对json格式要求非常严格了,要满足json.org网站定义的格式才能执行success回调,否则都会出错,无法解析返回的json数据

解决方法:

       修改返回值,使之符合json规范。

       JSON格式总结下,详细的去json.org 查看。 
         1)键名称:用双引号 括起 
         2)字符串:用使用双引号 括起 
         3)数字,布尔类型不需要 使用双引号 括起

 

以上是关于jquery ajax回调函数不执行的主要内容,如果未能解决你的问题,请参考以下文章

Ajax不执行回调函数的原因(转)

回调函数——callback

转: jquery中ajax回调函数使用this

JavaScript回调函数未执行

Jquery ajax json 不执行success的原因 坑爹

脚本完全加载并执行时,jquery .getscript()回调