我讀過關於這個參數的其他問題的加載,但沒有人能解決我的問題。 我以這種方式打電話給一個php頁面。200 /'parsererror'與jquery上ajax張貼到https
$.ajax({
url: 'https://mydomain/page.php',
type: "POST",
data: {
"arg1": arg1,
"arg2": arg2
},
success: function(data, textStatus, xhr) {
//do stuff
},
error: function(xhr, textStatus) {
alert("doLogin\n- readyState: "+xhr.readyState+"\n- status: "+xhr.status);
}
});
現在,如果我把這東西放在與php相同的服務器上,它工作正常。當我從本地主機啓動它時,麻煩就開始了。 在這種情況下,我在xhr中收到以下內容: readyState=0, status=0, statusText="error"
。 閱讀關於這個話題的一些答案似乎是因爲同源限制,所以我在呼叫中添加了一些參數。值得注意的是:
dataType:"jsonp",
crossDomain: true,
顯然這工作更好,因爲現在我收到readyState=4, status=200, statusText="success"
。麻煩是,textStatus="parsererror"
。我也試過其他的東西,如jsonpCallback
,cache
,async
,jsonp
在許多配置沒有運氣。
現在,我收不到任何數據,因爲這個調用只會給我一個我需要的cookie。
我的問題是:我是否正確地做事,對於初學者?在這兩種情況下,這種錯誤的原因是什麼?我稱之爲「https」/ POST的事實是否改變了一些東西,而不是簡單的http/GET?
第二個問題是,稍後我將不得不通過soap請求調用一些web服務,這會通過xml返回數據。將使用這種相同的技術工作(假設jQuery文檔很好,我可以寫dataType:"jsonp xml"
讓它在飛行中轉換(並假設它是正確的技術))?我認爲它不會,因爲jsonp期望callbackFN({...})
而不是xml的東西,對吧?
如果沒有一個是正確的,那麼正確的處理方式是什麼?我無法觸摸服務器,因此我僅限於客戶端。
那麼你會怎麼樣呢?任何方式來得到這個XML沒有設置代理,你會知道嗎? – Stephan 2012-04-19 12:54:39
我承認文檔說應該可以使用數據類型:「jsonp xml」。但文檔也沒有提供詳細信息...甚至其他stackoverflow主題沒有涵蓋它呢......有趣的 – devnull69 2012-04-19 13:05:46