我創建了一個快速原型作爲更大項目的概念證明。我需要創建一個可用的跨域POST請求,並且我有jQuery可用。jQuery POST請求 - 提交<form><iframe>
因爲我假設(請糾正我,如果我錯了),$ .ajax()將無法正常工作,因爲發出POST請求的頁面與接收請求的服務器在不同的域中,猜測最好的解決方案是使用JavaScript創建一個<iframe>,然後在那裏插入一個< form method =「post」>,其中包含隱藏的輸入和我的POST數據,然後提交。
我到底該怎麼做? (請提供代碼示例如果可能的話)。
到目前爲止,我有這樣的:
<button type="button" name="button">Make Cross-Domain POST Request</button>
<script>
$('button').click(function() {
$('body').append('<iframe id="post_frame" style="width: 0; height: 0; border: none;"></iframe>');
setTimeout(function() {
var frame_body = $('#post_frame').contents().find('body');
frame_body.append('<form action="..." method="post"><input type="hidden" name="foo" value="bar" /><input type="submit" /></form>');
// not sure what goes here (should submit the form in the iframed document once it has loaded)
}, 1);
});
</script>
我知道我需要使用提交()方法,但我不知道,看起來到底是什麼喜歡,特別是因爲<形式>是在<iframe>和我應該只調用提交()後<iframe>已加載。
請讓我知道,如果您有任何建議/想法,發現任何錯誤,可以推薦更好的方法,等等。
(順便說一句,我做了前對堆棧溢出天一些搜索和可以發誓,我發現在一個相關的問題一些代碼,將是有益的。今天我找不到,但...)
非常感謝您的幫助,但我想使用jQuery來增強跨瀏覽器的兼容性,並且我認爲我需要使用
上面的代碼應該適用於所有的瀏覽器,它使用基本的JavaScript,所有的瀏覽器都是相同的。你可以把它放在一個iframe中... – Sergey 2009-10-14 18:09:16
來解決你的跨域問題,你不需要使用iframe。你可以使你的ajax請求使用jsonp對象,它跨域工作。只需在ajax調用中添加數據類型:jsonp,它就可以跨域使用。 – Sergey 2009-10-14 18:12:11