因为jQuery.ajax()老是碰到各种各样的错,于是决定用最原始的DOM方式实现ajax获取jsonp的方法,过程中也加深了对其的理解!
总的来说就是动态创建DOM的script节点并添加到head中,url为请求jsonp的地址,需要带callback方法名,这样就可以回调本地的方法,传入参数了。
详解:
var url = "http://localhost:5000/route?callback=callback_function_name&...."
// add script to DOM
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
document.head.appendChild(script);
这样我们就向html动态添加了<script src="..." type="..."></script>节点,url参数需要设置回调函数的方法名,具体设置要参照服务提供方的doc(大概就是获取url参数中key=callback的值作为方法名,用来包装服务方要返回的json数据,然后一起传回)。
PS: jquery中设置可见:【error】jQuery.ajax()报错Uncaught SyntaxError: Unexpected token
于是script的内容就呈现为 callback_function_name({json}),因为加载了该脚本,所以会调用本地的名字为callback_function_name的方法,而传回的数据json就作为callback_function_name的参数传入方法进行处理。
var callback_function_name(json_data){......}
参考链接:http://www.jb51.net/article/57728.htm