最後,仔細安靜下來,細讀 json 官方文件後發現這麼一段:
JSON資料是一種能很方便透過JavaScript解析的結構化資料。如果取得的資料檔案存放在遠端伺服器上(網域名稱不同,也就是跨網域取得資料),則需要使用jsonp類型。使用這種類型的話,會建立一個查詢字串參數 callback=? ,這個參數會加在請求的URL後面。伺服器端應在JSON資料前加上回呼函數名,以便完成一個有效的JSONP請求。如果要指定回呼函數的參數名稱來取代預設的callback,可以透過設定$.ajax()的jsonp參數。
其實jquery跨域的原理是透過外鏈<script> 來實現的,然後在透過回呼函數加上回呼函數的參數來實現真正的跨域 <br/><br/>Jquery 在每次跨域發送請求時都會有callback這個參數,其實這個參數的值就是回呼函數名稱,所以,伺服器端在發送json資料時,應該把這個參數放到前面,這個參數的值往往是隨機產生的,如:jsonp1294734708682,同時也可以透過$ .ajax 方法設定callback 方法的名稱。明白了原理後,伺服器端應該這樣傳送資料: <br/><br/>string message = "jsonp1294734708682({"userid":0,"username":"null"})"; <br/><br/> ,"username":"null"} 就作為了jsonp1294734708682 回呼函數的一個參數 <br/><br/>跨域獲得Json時invalid label的解決方法: <br/><br/>伺服器端在輸出Json 資料時,前面參數:jsonp1294734708682({"userid":0,"username":"null"})</script>
更多Jquery跨域獲得Json時invalid label錯誤的解決方案相關文章請關注PHP中文網!