因為HTTP出於安全考慮,ajax是不允許跨域訪問的,不過跨域通過scrip的src傳遞參數訪問。js原生方法看我ajax下的文章。
因為jQuery已經封裝好了,我們直接傳遞參數就可以了。
HTML頁面,有兩個按鈕一個普通方法,dataType:HTML,也可以傳遞HTML代碼。
其中jsonp 和 jsonpCallback 參數都是可加可不加的。如果不加,服務器端的方法名就一點要寫callback
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jquery-ajax</title> </head> <body> <input type="button" value="點擊" id="btn"> <input type="button" value="點擊" id="btn2"> <div id="showInfo"></div> <script type="text/javascript" src="js/jquery-1.11.2.js"></script> <script type="text/javascript"> $(function(){ $("#btn").click(function(){ $.ajax({ url:"01jquery.php",//一個用來包含發送請求的URL字符串。 dataType:"script",//放回值的類型,可以是HTML,text,json.... type:"get", success:function(data){//請求成功后的回調函數 // $("#showInfo").html(data) data; }, error:function(e){ console.log(e); } }); }); $("#btn2").click(function(){ $.ajax({ url:"02jquery.php",//一個用來包含發送請求的URL字符串。 dataType:"jsonp",//返回值的類型 type:"get", data:{citycode:123,flag:"abc"},//傳遞的值 jsonp: "cb",//傳遞給請求處理程序或頁面的,用以獲得jsonp回調函數名的參數名(默認為:callback,都不加參數為 callback=jQuery121.....) //jsonpCallback:"myfun",//自定義的jsonp回調函數名稱,默認為jQuery自動生成的隨機函數名(都加參數cb=myfun) success:function(data){//請求成功后的回調函數 // console.log(data[1]) $.each(data,function(i,el){ var op = $("<li>"+i+">>>"+el+"</li>") $("#showInfo").append(op); }); }, error:function(e){ console.log(1); console.log(e); } }); }); }); </script> </body> </html>
01jquery
<?php // 可以放字符串、HTML標簽、JavaScript、只不過ajax的dataType值修改一下就可以了 //$tag ="hello ajax"; //$tag = '<div>水果</div><div>水果</div><div>水果</div><div>水果</div><div>水果</div><div>水果</div><div>水果</div><div>水果</div>'; $tag = 'alert(123);'; echo $tag; ?>
02jquery
<?php $citycode= $_GET['citycode']; $flag= $_GET['flag']; $callback = $_GET['cb'];////如果ajax頁面的jsonp 參數不填。我們就寫這個格式 $callback = $_GET['callback']; $arr=array($citycode,$flag,"BMW"); echo $callback.'('.json_encode($arr).')'; ?>