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:感谢露露!术业有专攻啊。希望我这篇烂文能帮到有的后来人

posted on 2012-11-20 14:25  Mr.xiong  阅读(1112)  评论(0)    收藏  举报