1.JSONP原理
ajax請求受同源策略影響,不允許進行跨域請求,而script標簽src屬性中的鏈接卻可以訪問跨域的js腳本,利用這個特性,服務端不再返回JSON格式的數據,而是返回一段調用某個函數的js代碼,在src中進行了調用,這樣實現了跨域。
同源策略:是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說Web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現。同源策略,它是由Netscape提出的一個著名的安全策略。現在所有支持JavaScript 的瀏覽器都會使用這個策略。所謂同源是指,域名,協議,端口相同。
2.ajax同步和異步
xmlHttp.open(method, url,async);
async:布爾值,用來說明請求是否為異步模式。async是很重要的,因為它是用來控制JavaScript如何執行該請求。
當設置為true時,將以異步模式發送該請求,JavaScript代碼將繼續執行而不再等待響應,且必須使用一個事件處理函數來監控請求的響應。
如果將async設置為false,則將以同步模式發送該請求, JavaScript將等接收到響應后再繼續執行剩余代碼。這意味著如果響應時間很長,則用戶在瀏覽器收到響應之前是將無法與其交互的。
基于這個原因,Ajax應用程序開發的最佳實踐是,使用異步請求來實現數據獲取,使用同步請 求來實現與服務器之間發送和接收簡單的消息。
用同步模式來發送該請求(將open()方法的第三個參數設置為false),可以使你在調用send()方法之后馬上對其響應進行處理。
這對于想讓用戶交互等待響應,或希望只接收很少的數據(例如,小于1KB)的應用場景是很有用的。而對于通常的數據量或較大的數據量而言,最好還是使用異步調用。