您的位置:首页 > Web前端 > JQuery

Jquery getJSON 实现跨域请求 --- callback

2014-10-23 11:42 555 查看
Jquery getJSON 实现跨域请求 --- callback

当前域名访问 me.com 文件

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script><script>

$.getJSON('http://localhost/test.php?callback=?',{p1:'11'},function(msg){
//调用域localhost的test.php(其实两个文件在相同目录下) console.dir(msg);})

</script>
localhost/test.php 文件

<?php die($_GET['callback'].'('.json_encode(array('msg'=>1)).')');?>

 getJSON 核心思想是 执行getJSON 注册一个以当前时间命名的function 然后再服务端执行该函数 (具体源码)

1、

getJSON: function( url, data, callback ) { return jQuery.get(url, data, callback, "json"); },
2、




get: function( url, data, callback, type ) { // shift
arguments if data argument was ommited if ( jQuery.isFunction( data ) ) { callback = data; data = null;
} return jQuery.ajax({ type: "GET", url: url, data: data, success: callback, dataType: type });},




3、




// Build temporary JSONP function if ( s.dataType == "json" &&
(s.data && s.data.match(jsre) || s.url.match(jsre)) ) { jsonp = "jsonp" + jsc++; // Replace
the =? sequence both in the query string and the data if ( s.data ) s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
s.url = s.url.replace(jsre, "=" + jsonp + "$1"); // We need to make sure // that
a JSONP style response is executed properly s.dataType = "script"; // Handle JSONP-style
loadingwindow[ jsonp ] = function(tmp){ data = tmp; success(); complete(); // Garbage
collect window[ jsonp ] = undefined;try{ delete window[ jsonp ]; } catch(e){} if (
head ) head.removeChild( script ); }; }


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: