若是使用XMLHttpRequest 不能發送跨域請求,可是能夠使用
script 標籤去發送請求
若是添加了一個dataType 等於 jsonp,jQuqey 的ajax 方法
底層就不使用XMLHttpRequest, 而是去建立一個script標籤,
而後經過script 標籤去發送請求
若是使用script 標籤發送請求,那麼如何接收服務器發送返回的數據?
若是使用script 標籤發送請求,服務器返回了數據,返回的數據
客戶端瀏覽器直接以javascript 的方式去解析服務器返回的數據
script 瀏覽器調用js 的解析引擎去解析數據javascript
客戶端給服務端傳遞一個回調函數,它還須要定義一個函數
服務端返回的是一個回調函數的調用,而且將服務端的數據包在這個函數的調用裏面php
jsonp 只能使用get
由於底層使用script 標籤發送請求
scr href 這些發送的請求都是get 請求html
jquery 只支持jsonpjava
post 也是能夠跨域的,但就不是jsonp 了jquery
post 是 cors 跨域資源共享ajax
服務端:json
<?php $callback = isset($_REQUEST['callback']) ?$_REQUEST['callback'] : ''; $data = array('name'=>'lisi','age'=>22); $json = json_encode($data); echo $callback . "($json)";
客戶端:跨域
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <input type="button" value="click"> <script type="text/javascript"> function getInfo(args){ console.log(args) } document.querySelector('input').onclick = function(){ var script = document.createElement('script'); script.src = 'index.php?callback=getInfo'; document.body.appendChild(script); } </script> </body> </html>