2010-11-24 65 views
3

我有輸出HTML的一個簡單的線路的形式的域檢索的HTML <a href="link">A LINK</a>橫跨使用jQuery和JSONP

我可以因爲這是跨越打算附加到URL等http://site.com/form.asp?sample=100

數據直接訪問過程域(到一個子域)我試圖用JSONP來做到這一點。我第一次嘗試了數據類型JSON,但我仍然得到了403禁止。這裏是我用JSONP嘗試的東西,但是這是各種各樣的錯誤,並返回一個錯誤,這個%5Bobject%20Object%5D「附加到它,我想這是一個問題,我試圖將數據追加到網址是什麼?

$j.getJSON({ 
     type: 'POST', 
     url: 'http://site.com/form.asp', 
     data: 'order=' + ordervalue, 
     contentType: "application/json; charset=utf-8", 
     dataType: "jsonp", 
     success: function(response) { 
      alert(response); 
     } 
    }); 

回答

7

JSONP不喜歡這個工作,你不發送JSON的一切,你要發送HTML。

JSONP是嚴格意義上的GET請求(通過創建一個<script>標籤製造) ,你不能跨域得到結果......它只是不會這樣工作。JSONP的工作方式是它基本上添加到您的頁面:

<script type="text/javascript" src="http://site.com/form.asp?order=something&callback=myFunc"></script> 

....這種反應必須是有效的JavaScript,通常它看起來像:

myFunc({ "key": "value"...data, etc... }); 

它不用於提取HTML工作,它只是拋出一個語法錯誤,這個限制是非常有意和部分安全塊已到位(same origin policy的一部分)。

+0

感謝您的解釋尼克。我確實將類型設置爲'GET',但遇到同樣的問題,所以我想嘗試發佈。您是否有關於如何獲取通過跨域屬性的url打印的html的建議?我正在使用json,但得到了403,我不知道我是否與jsonp非常接近。 – Zac 2010-11-24 09:17:19

1

您仍然可以交/在客戶端上跨域:

flyJSONP/YQL
jankyPOST/postMessage的/ contentWindow
CORS