2012-11-11 22 views
1

我正在使用jQueryMobile。我想提出一個http請求,但我不需要這個答案,因爲我幾乎知道這個請求會結束。問題:請求的目標是外部服務器,因此我只能使用JSONP。但服務器不支持,只是返回純文本或有效的XML(我可以改變與請求的網址)。 如何在不出錯的情況下提出此請求?不使用答案的外部HTTP請求

在ajax中使用jsonp時,我收到錯誤,說明存在語法錯誤。 當僅以正常的ajax/text/xml請求發送請求時,服務器根本就沒有聯繫。我知道這一點,因爲我正在聯繫短信網關,並沒有收到短信。

我的解決方法是當前插入一個新的iframe與src的URL和顯示風格:none;在Firefox中正常工作,但我懷疑這是(唯一的)解決方案。

你有什麼解決方案?

回答

2

我想你已經實現了最好的答案。讓我們走過的約束:

  1. 這是一個跨域請求,你不控制的服務器,所以你不能使用檢查同源的各種HTML5,Flash或Java的API的。

  2. 這留下插入一些DOM元素,將加載遠程資源。

  3. 您已確定<script>不會這樣做,因爲內容類型錯誤。

  4. 同樣,你不能使用<img>,<embed><object>,那些即使他們工作也是邪惡的黑客選擇。

我認爲是剩下的唯一選擇,如果你想從瀏覽器發出請求。

您的另一種選擇是在您自己的服務器上實現代理遠程API的API。然後您可以使用XHR發出請求,並且您可以在客戶端上進行完整的錯誤檢查。

+1

謝謝你的回答。 iframes的事情是我擔心它不會被所有瀏覽器隱藏,甚至沒有加載。之後我做了一些調查,發現隱藏的iFrames是將惡意代碼注入網站的常用技巧。我在iPad上使用Firefox和Safari Mobile對其進行了測試,並且均可正常工作。 iframe根本看不到,但明顯加載。我從兩個嘗試中都收到了來自網關的短信。 – Zim84