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 loading

            window[ jsonp ] = function(tmp){

                data = tmp;

                success();

                complete();

                // Garbage collect

                window[ jsonp ] = undefined;

                try{ delete window[ jsonp ]; } catch(e){}

                if ( head )

                    head.removeChild( script );

            };

        }

 

 
 
 





你可能感兴趣的:(callback)