2014-06-06 162 views
0

我正在開發一個filemaker項目。在這個項目中,我需要向肥皂服務提出請求。爲此,我在Filemaker中使用Web查看器。在Web瀏覽器中,我發出肥皂請求,然後使用filemaker fmp://協議,我可以將數據從Web查看器發送到我的數據庫以供進一步處理。IOS上的xmlhttprequest沒有發送請求?

爲了使這項工作,我會加載到Web瀏覽器的HTML頁面。 我有以下的本地HTML頁面,包含與SOAP服務通信的腳本:

<html> 
<head> 
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> 
<meta http-equiv="Pragma" content="no-cache" /> 
<meta http-equiv="Expires" content="0" /> 
</head> 
<body> 
<script language='JavaScript' type='text/JavaScript'> 
var xhr = new XMLHttpRequest(); 
var req = ' --- request comes here ----'; 
xhr.open('POST', 'https://--- soapservice endpoint ---', true, '***_***_***', '******'); 
xhr.onload = function (e) { 
    if (xhr.readyState === 4) { 
    if (xhr.status === 200 || xhr.status === 0) { 
     alert ('Onload responsetext: ' + xhr.responseText); 
    } else { 
     alert ('Onload statustext: ' + xhr.statusText); 
    } 
    } 
}; 


xhr.onerror = function (e) { 
    alert ('onerror statustext: ' + xhr.statusText + ',status: ' + xhr.status); 
}; 
xhr.setRequestHeader('Content-Type', 'application/xml'); 
xhr.setRequestHeader('SOAPAction', ''); 
xhr.send(req); 
</script> 
</body> 
</html> 

當我在Safari中打開這個頁面,在我的iMac,腳本工作正常,我從服務器獲得響應。

在我的Ipad IOS上我沒有收到服務器的響應。 xhr.Status = 0,readyState = 4,responseText爲空。 如果我在de腳本中放置onreadystatechange函數,它會在每個就緒狀態更改(1到4)時發出警報,我只收到就緒狀態1和就緒狀態4的警報。

觸發錯誤功能,提供警報狀態0和空狀態文本

因爲它不是公共服務器我不能發佈實際的網址 用戶名中有兩個「_」。

爲什麼這段代碼不能在IOS中工作?

+0

我不知道你的問題的答案。恕我直言,你會更好**直接從響應導入**記錄,使用XSLT樣式表將響應轉換爲Filemaker的XML語法。 –

+0

使用filemaker Go不可能導入xml文件。我試圖讓這個數據庫在我的Ipad上工作。 – ErikB

+0

啊,對不起,你說得對。如何從URL插入[],這會對你有用嗎? –

回答

1

這個概念正在研究IOS,filemaker GO。 javascript代碼沒有問題。出於某種原因,Filemaker中的Webviewer未在我的主數據庫應用程序中運行Filemaker GO上的腳本。它在我的測試數據庫中運行?

找到了解決方案:出於某種原因,Web查看器未在我的Ipad上加載數據網址。這是通過插入腳本步驟「刷新窗口」來解決的。不要問我爲什麼,但它解決了這個問題。

相關問題