2 回答

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
一般是用jsonp,原理很簡單,比如你在A域名請(qǐng)求B域名:
1. 在A域名的頁面中使用script標(biāo)簽src寫成B域名中服務(wù)器的URL
script標(biāo)簽是可以跨域的,比如你調(diào)用Google Map或Google Analytics時(shí)引入的js就是google域名下的。
2. 后端程序在最后需要把一段js代碼的字符串print出來,這樣就可以運(yùn)行A域名js中寫好的callback方法,將要返回的數(shù)據(jù)放入?yún)?shù)就可以了
A域名中的js文件:
<script type="text/javascript" src="http://www.b.com/action?callback=myCallback"></script><script type="text/javascript"> function myCallback (data) { alert(data); }</script>
B域名中服務(wù)器
String cb = get('callback'); Int b = 'return data';print('<script type="text/javascript"> ' + cb + '(' + b + '); </script>');
后端print數(shù)據(jù)到頁面中后就會(huì)這樣
<script type="text/javascript"> myCallback('return data');</script>

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
我做過這樣的jsonp 很簡單的 服務(wù)器返回的js本插入到頭部
補(bǔ)充下服務(wù)器端 以java 為例子
struts.xml 代碼
<action name="xx" class="xxx" method="xxxx">
<result name="success" type="json">
<param name="callbackParameter">callback</param> <!-- callback 可以是自己定義的請(qǐng)求參數(shù)-->
</result>
</action>
這樣就Ok了
添加回答
舉報(bào)