2014-06-06 105 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上加载数据网址。这是通过插入脚本步骤“刷新窗口”来解决的。不要问我为什么,但它解决了这个问题。

相关问题