parsererror错误之我的错误
直接入题,写功能时要用到地区下拉列表,且数据源从外部接口提供。因此,很容易的写出了以下代码
function loadArea(){ $.ajax({ type: "post", dataType: "json", url: "http://192.168.54.47:82/api/getArea.do.do?type=getProvByCountryCode&countrycode=086", success: function(res) { if(res.result=='ok'){ var html='<option>不限--</option>'; $.each(res.data.list,function(index,prvc){ html+="<option value="+prvc.provcode+">"+prvc.prov+"</option>"; }); $("#province").html(html); } else { alert(res.msg); } } }) }
兴冲冲的上传测试环境,验证~~结果——没出来,我找啊找啊找,从关键字到标点符号再到url地址都没有问题,而且firebug也没有捕捉到任何错误,还捕捉到确实发出了http请求啊。我悲啊,我郁闷啊。虽然我不常写前端,可这个看起来真的很简单啊,不应该出现这种情况啊。抱着对自己技术的自信,又琢磨研究了不下一天时间无解,后请教了2个同事帮忙看,有进展的一个就是帮我加了个报错处理函数,因此代码变成了
function loadArea(){ $.ajax({ type: "post", dataType: "json", url: "http://192.168.54.47:82/api/getArea.do.do?type=getProvByCountryCode&countrycode=086", success: function(res) { if(res.result=='ok'){ var html='<option>不限--</option>'; $.each(res.data.list,function(index,prvc){ html+="<option value="+prvc.provcode+">"+prvc.prov+"</option>"; }); $("#province").html(html); } else { alert(res.msg); } },
error:function (XMLHttpRequest, textStatus, errorThrown) {
// 通常情况下textStatus和errorThown只有其中一个有值
alert(textStatus);
} }) }
这下好了,总算报错了,提示parsererror。哎,料想着有错误提示了就好办了吧。开心呀。而且都说了是解析错误嘛。这个接口返回格式是json的呀,放眼一看真没发现格式错误呀。又陷入纠结中。就这么几行代码啊,坑爹。搜索了n多资料,有的说是jquery1.4及以上版本的bug,对格式有强校验,更有的说是要设置response的编码集,各种法子都试了,无解……正当我打算先放弃开始做下一个功能时,另外一个同事(露露)过来帮坐我对面的XX搞定一个jquery问题。我立马叫上露露过来瞅瞅我的问题。高手就是高手啊,几句话的描述,再一看我的代码,人家说“js是不能跨域访问的,你这样当然不行了”。好吧。结果就是,我改成了本地代理以后,真的OK了。瀑布汗哪。最后的代码是
function loadArea(){ $.ajax({ type: "post", dataType: "json", url: "/ajax/getarea.do?type=getProvByCountryCode", success: function(res) { if(res.result=='ok'){ var html='<option>不限--</option>'; $.each(res.data.list,function(index,prvc){ html+="<option value="+prvc.provcode+">"+prvc.prov+"</option>"; }); $("#province").html(html); } else { alert(res.msg); } }, error:function (XMLHttpRequest, textStatus, errorThrown) { // 通常情况下textStatus和errorThown只有其中一个有值 alert(textStatus); } }) }
请求地址 /ajax/getarea.do实际上里面也就是直接http请求接口,把返回值再转发给我的页面而已
PS:感谢露露!术业有专攻啊。希望我这篇烂文能帮到有的后来人