Jquery的跨域传输数据(JSONP)

后端:

<?php
$json_str = json_encode(array("ddd"=>"11111111"));
echo $_GET['ja'].'('.$json_str.')';
?>

前端:

$.getJSON('http://www.liushan.cn/test.php?ja=?',function (json){
     alert(json);
});

纯JS实现(JSONP):

//server return aa({'ddd':'ddd'}) callback function name: $_GET['callback'] 
//author:lonely
    (function(w){
        
function getjson(){}
        getjson.prototype.set
=function(url,callback,callbackname){
            
this.callfn=callbackname||'urlcallback';
            
this.url=url+"?callback="+this.callfn;
            
try{
                eval(
this.callfn+"=function(data){\n"+
                
"callback(data);\n"+
                
'delete '+this.callfn+';}');
            }
catch(e){return;}
            
this.request();
            
delete this.url;
        }
        getjson.prototype.request
=function(){
            
var script=document.createElement("script");
            script.src
=this.url;
            
var load=false;
            script.onload 
= script.onreadystatechange = function() {
                
if(this.readyState === "loaded" || this.readyState === "complete"){
                    load
=true;
                    script.onload 
= script.onreadystatechange=null;
                }
            };
            
var head=document.getElementsByTagName("head")[0];
            head.insertBefore(script,head.firstChild);
        }
        w.getjson
=getjson;
    })(window)
//使用DOME
    new getjson().set("http://www.test.cn/test.php",function(data){
        alert(data.ddd);
    });

 

另一个:getScript

 

jQuery.getScript("http://dev.jquery.com/view/trunk/plugins/color/jquery.color.js"function(){
  $(
"#go").click(function(){
    $(
".block").animate( { backgroundColor: 'pink' }, 1000)
      .animate( { backgroundColor: 
'blue' }, 1000);
  });
});//CHM帮助文件示例

 

posted @ 2011-03-07 15:16  liushan  阅读(562)  评论(0)    收藏  举报