jquery 1.7 1.5 1.9 jsonp调用后产生的异常

本文探讨了使用不同版本的 jQuery 进行 JSONP 调用时遇到的问题,并提供了解决方案。从 jQuery 1.5 版本开始,由于改变了对 JSONP 的处理方式,导致原有的 $.getJSON 方法不再适用。文中详细介绍了如何通过 $.getScript 方法和自定义回调函数来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.4版的jquery使用以下调用方式没有问题

$.getJSON("http://zhidao.51auto.com/qa_json?type=3&size=5&jsoncallback=?",
		function (result){
			alert(eval("("+result+")") )
			var qaStrHtml="";
			$.each(result, function(i,item){
				qaStrHtml+='<dl>';
				qaStrHtml+='<dt><a target="_blank" href="'+item.url+'">'+item.question+'</a></dt>';
				qaStrHtml+='<dd>';
				qaStrHtml+='<span class="da">描述:</span>';
				qaStrHtml+='<span class="hui">'+item.QContent+'</span>';
				qaStrHtml+='<dd>';
				qaStrHtml+='<span class="da">答:</span>';
				qaStrHtml+='<span class="hui">'+item.answer+'</span>';
				qaStrHtml+='</dd>';
				qaStrHtml+='</dl>';
				alert(qaStrHtml);
			});
			$(qaStrHtml).insertAfter($(".tit_a",$("#indexQaDiv")));
	});


1.5以后的jquery使用上面调用方式就会报错:ReferenceError: jquery172026866009711494165_1372658096550 is not defined

经过不断摸索查阅官方文档发现如下:

As of jQuery 1.5.1, the jqXHR object also contains the overrideMimeType() method (it was available in jQuery 1.4.x, as well, but was temporarily removed in jQuery 1.5). The .overrideMimeType() method may be used in the beforeSend() callback function, for example, to modify the response content-type header:

       翻译如下:

从jQuery 1.5.1开始jqXHR对象还包含了overrideMimeType方法 (它在jQuery 1.4.x中是有效的,但是在jQuery 1.5中暂时的被移除)。.overrideMimeType() 方法可能用在beforeSend()的回调函数中,例如,修改响应的Content-Type信息头:



改版策略使用如下方式实现:

$.getScript("http://zhidao.51auto.com/qa_json?type=3&size=5&jsoncallback=qa20130630");
     function qa20130630(result) {
       var qaStrHtml="";
			jQuery.each(result, function(i,item){
				qaStrHtml+='<dl>';
				qaStrHtml+='<dt><a target="_blank" href="'+item.url+'">'+item.question+'</a></dt>';
				qaStrHtml+='<dd>';
				qaStrHtml+='<span class="da">描述:</span>';
				qaStrHtml+='<span class="hui">'+item.QContent+'</span>';
				qaStrHtml+='<dd>';
				qaStrHtml+='<span class="da">答:</span>';
				qaStrHtml+='<span class="hui">'+item.answer+'</span>';
				qaStrHtml+='</dd>';
				qaStrHtml+='</dl>';
			});
			jQuery(qaStrHtml).insertAfter(jQuery(".tit_a",jQuery("#indexQaDiv")));
    }

官方文件可参考:http://api.jquery.com/jQuery.ajax/

 http://www.css88.com/jqapi-1.9/jQuery.ajax/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值