日期:2014-05-16  浏览次数:20703 次

$.ajax() & $.getJSON() 这两个函数的使用
今天在学习ajax的时候,做验证码验证,ajax传递数据到后台进行处理,返回处理的结果

但是遇见一个问题,使用$.ajax()函数的时候,总是提示url地址404错误,但是后台控制器能接收到数据
而且用$.getJSON()的时候完全OK,不知道这是什么情况
js代码:
$("#code").blur(function(){
var codedata = $("#code").val();
$.getJSON('<%=path%>/matchCodes','code='+codedata,function(data){
alert(data.codeStatus);
});
});


	$.ajax({
type:"get",
url:"<%=path%>/matchCodes",
data:"code="+codedata,
dataType:"json",
success:function(data){
alert(data.codeStatus);
},
error:function(data){
alert("失败");
}
});


这里只能因为404的原因,只能执行error回调函数这是为什么,url地址完全相同啊

------解决方案--------------------
$.ajax 是传统的 get、post 方法的 AJAX 实现
$.getJSON 是 jsonp (远程数据读取)类AJAX 实现
之所以称为 类AJAX 是因为尽管他被封装在 jq 的 ajax 类中,但实际是透过 script 节点实现的

在使用上 $.getJSON 和 $.ajax 的区别在于:
发送时,$.getJSON 会传递一个回调函数名(缺省时jq会给一个)
接收是,这个回调函数会被调用
$.getJSON 的服务器端必须将传入的回调函数名附加在json数据之前
正因为这样,这个返回的串就已经不是 json 了(格式错了)
因此有 dataType:"json" 属性的 $.ajax 会因json解析错误而进入 error 分支