首页 > Web开发 > 详细

JSONP跨域

时间:2015-12-16 19:29:40      阅读:253      评论:0      收藏:0      [点我收藏+]
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://bbb.com";
var head = document.getElementsByTagName("head")[0];
head.insertBefore(script, head.firstChild);

js跨域和jquery跨域有什么优缺点?


jquery已经将所有的调用封装成对象,调用起来很方便 js跨域写起来比较麻烦,尤其是传递参数的时候,需要手动拼接data ?&p1=1&p2=2 但是jquery的跨域有个bug,当同时发出大量请求瞬间返回结果时,会导致接收请求的时候丢失部分回调请求(实际上已经发送成功了) 例: 
这种情况很常见,就是循环发送ajax请求么。 非跨域请求这么写没有问题,success会被调用100次,但是当dataType : "jsonp"时,success可能只会执行70次80次,剩下的请求没有成功也没有失败,用complete也抓不到。 浏览器会报错找不到callback,或无任何提示。有两个地方会引起这种问题

		// Clean-up function
		jqXHR.always(function() {
			// Set callback back to previous value
			window[ jsonpCallback ] = previous;
			// Call if it was a function and we have a response
			if ( responseContainer && jQuery.isFunction( previous ) ) {
				window[ jsonpCallback ]( responseContainer[ 0 ] );
			}
		});

1.callback被清除,所以有时候会报出找不到callback这个方法 2.xmlHttp.readyState==4  同时发送请求的时候,浏览器的状态只有这么一个readyState当浏览器知道已经获取返回结果了,就不接收请求了 这个肯定是jquery的bug,使用js跨域没有问题

JSONP跨域

原文:http://www.cnblogs.com/liuyouying/p/5051936.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!