ajax跨域返回報錯
A. 使用jquery的ajax的jsonp類型跨域請求數據、始終獲取不到返回數據呢
使用jquery的ajax的jsonp類型跨域請求數據、始終獲取不到返回數據是設置錯誤造成的,解決方法為:
1、創建基本的文件結構json_ajax.html和json_ajax.php,下載jquery.js。
注意事項:
jQuery的核心特性可以總結為:具有獨特的鏈式語法和短小清晰的多功能介面;具有高效靈活的css選擇器,並且可對CSS選擇器進行擴展;擁有便捷的插件擴展機制和豐富的插件。jQuery兼容各種主流瀏覽器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。
B. AJAX跨域請求/非同步請求,怎麼樣獲取返回值
若是用jq,
$.ajax({
url:"",
success:function(res){
console.log(res)//這里的res就是返回值
}
});
若不是jq自己就寫個ajax,
function ajax(url,succ) {
var aj=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")
aj.open("get", url, true)
aj.send();
aj.onreadystatechange = function() {
if(aj.readyState == 4&&aj.status==200&&succ) {
succ(aj.responseText)
}
}
}
//aj.responseText就是返回值。
C. 如何解決ajax跨域問題
1、什麼是跨域
跨域問題產生的原因,是由於瀏覽器的安全機制,JS只能訪問與所在頁面同一個域(相同協議、域名、埠)的內容(參考js的同源策略)。
但是我們項目開發過程中,經常會遇到在一個頁面的JS代碼中,需要通過AJAX去訪問另一個伺服器並返回數據,這時候就會受到瀏覽器跨域的安全限制了。
這里要注意,如果只是通過AJAX向另一個伺服器發送請求而不要求數據返回,是不受跨域限制的。瀏覽器只是限制不能訪問另一個域的數據,即不能訪問返回的數據,並不限制發送請求。
2、跨域解決方案
jsonp
Web頁面上調用js文件時不受是否跨域的影響,凡是擁有"src"這個屬性的標簽都擁有跨域的能力,比如<script>、<img>、<iframe>。那就是說如果要跨域訪問數據,就服務端只能把數據放在js格式的文件里。恰巧我們知道JSON可以簡潔的描述復雜數據,而且JSON還被js原生支持,所以在客戶端幾乎可以隨心所欲的處理這種格式的數據。然後客戶端就可以通過與調用腳本一模一樣的方式,來調用跨域伺服器上動態生成的js格式文件。客戶端在對JSON文件調用成功之後,也就獲得了自己所需的數據。這就形成了JSONP的基本概念。允許用戶傳遞一個callback參數給服務端,然後服務端返回數據時會將這個callback參數作為函數名來包裹住JSON數據,這樣客戶端就可以隨意定製自己的函數來自動處理返回數據了。
三步走:創建script、指定src,插入到文檔。
jQuery支持JSONP的調用。在另外的一個域名中指定好回調函數名稱,就可以用下面的形式來就載入JSON數據。
jQuery.getJSON(url + "&callback=?", function(data) {
alert(data.a + data.b);
});
服務端當然也要提供JSONP的支持,其實只要提供讀寫callback這個params就可以了。
跨域資源共享(CORS)
Cross-Origin Resource Sharing (CORS) 是W3c工作草案,它定義了在跨域訪問資源時瀏覽器和伺服器之間如何通信。CORS背後的基本思想是使用自定義的HTTP頭部允許瀏覽器和伺服器相互了解對方,從而決定請求或響應成功與否。
CORS與JSONP相比,更為先進、方便和可靠。
1、 JSONP只能實現GET請求,而CORS支持所有類型的HTTP請求。
2、 使用CORS,開發者可以使用普通的XMLHttpRequest發起請求和獲得數據,比起JSONP有更好的錯誤處理。
3、 JSONP主要被老的瀏覽器支持,它們往往不支持CORS,而絕大多數現代瀏覽器都已經支持了CORS。
對一個簡單的請求,沒有自定義頭部,要麼使用GET,要麼使用POST,它的主體是text/plain,請求用一個名叫Orgin的額外的頭部發送。Origin頭部包含請求頁面的頭部(協議,域名,埠),這樣伺服器可以很容易的決定它是否應該提供響應。
伺服器端對於CORS的支持,主要就是通過設置Access-Control-Allow-Origin來進行的。
Header set Access-Control-Allow-Origin *
為了防止XSS攻擊我們的伺服器, 我們可以限制域,比如
Access-Control-Allow-Origin: http://blog.csdn.net
很多服務都已經提供了CORS支持,比如 AWS 支持跨域資源分享功能CORS,向S3上傳不需要代理。
D. 用$.ajax jsonp跨域取值,能返回取值內容但是火狐報錯SyntaxError: illegal character
您好!很高興為您答疑!
SyntaxError: illegal character此錯誤提示出現在您使用了錯誤的特殊字元,如單引號、雙引號之類使用了雙角字元等,請您仔細檢查您的輸入是否有誤,修正後即可。
您可以在火狐社區了解更多內容。希望我的回答對您有所幫助,如有疑問,歡迎繼續在本平台咨詢。
E. 關於jquery ajax跨域返回數據的問題,伺服器端是.net的頁面
返回格式不對,要返回jsonp格式
在服務端
先接受callback: string callback = Request["callback"];
返回的時候需要吧callback帶上
例:
Response.Write(callback+"("+sjson+")");//sjson為json格式的數據
Response.End();
F. ajax跨域訪問,傳值,返回值等問題
$.get(
"list.action",//這個是執行的action,再xml配置。
{
selected:"#select option:selected").val(),time:new Date().getTime()//selected這個變數需要在action有對應的set和get方法,後面的時間是防止瀏覽器讀取緩存信息,如單次刷新操作可省略。
},
function(data){
data返回一個json對象,如action中有一個address的對象,address有一個phone屬性,
這里這樣獲取:data.address.phone
}
)
注意:在xml配置文件中格式,雙引號里內容你自己加。reuslt的返回jsp不寫,type類型必須寫json
<action name="" class="">
<result name="" type="json"></result>
</action>
這個data就是返回值
G. jquery ajax跨域請求 返回數組 報parsererror錯誤
這種情況我也遇到過,我之前也是需要跨域提交一個ajax請求實現新增數據,由於另一個系統的方法已固定,無法修改返回值。最後果斷放棄了ajax的jsonp跨域這種方式,改用httpClient代理,在後台代理http發送請求。你可以試試
H. ajax跨域請求 status為200為什麼會錯誤回調
status為http請求狀態碼,當200<=status<300則代表請求已成功被伺服器接收、理解、並接受,當status==200則說明請求已成功,請求所希望的響應頭或數據體將隨此響應返回。
所以當你status==200的時候,你應該執行的業務邏輯是拿到後台伺服器返回給你的數據(this.responseText)。之後你的業務就是解析後台返回過來的數據。
至於為什麼會錯誤回調,由於你並沒有把代碼貼出來,我也不知道。
望採納
I. ajax跨域的返回值怎麼輸出
因為安全限制,ajax的POST方法是不支持跨域的。所以你可以通過get方法進行跨域請求。也可以通過
J. ajax跨域請求返回200但是沒有數據
jsonp 跨域 需要前後端都做出更改
前端 使用jquery 的 ajax 用jsonp的話 要將dataType 設置為jsonp
後端需要把返回的數據包裝一下 包裝成前端可識別的數據才行