0

我正在从事一个移动项目(使用 Titanium Studio),其中我有以下情况

1) 我的移动应用程序联系 Rails 后端检查一些数据,比如检查用户 ID 的有效性。

2)我找到了一种在移动应用程序中加载网页的方法,即,WebView

3)我可以加载所需的网址,例如http://www.mydomain.com/checkuser?uid=20121 返回数据status:success

但是我需要读取这些数据来显示来自服务器的响应是成功还是失败,我该如何实现呢?

注意:上述场景是一个用例,但实际上发生的是我加载了第三方 url WebView,当用户输入数据并提交时,结果将被发布回我的网站 url。

编辑:所以过程如下

1) WebView 加载了第三方 url,如http://www.anyapiprovider.com/processdata

2) 用户将在该网页中输入一组数据并提交该页面

3)提交的数据将由 apiprovider 处理并将数据返回到我的网页说http://www.mydomain.com/recievedata

这就是为什么我不直接使用 FYI 的原因GETHTTPClient 尝试按照几篇文章的建议直接从实际网页触发 Ti.APP 事件,但他们中的大多数人说这只有在加载的文件在本地和不是远程文件。参考链接

如果我的方法必须改进,请建议我。

谢谢

4

3 回答 3

2

如果您不想听从 Josiah 的建议,请查看 Titanium 文档,了解如何添加webview.addEventListener('load',...事件侦听器并使用webview.evalJS()将您自己的代码注入第三方 HTML。

也许您可以注入代码来捕获提交事件并触发 Ti 事件以触发从您的网站下载数据。

WebViews 和 Titanium 之间的通信 - 远程 Web 内容部分

于 2012-10-17T08:36:16.067 回答
1

我找到了解决问题的方法

1)http://www.mydomain.com/checkuser?uid=20121在webview中加载

2)让用户输入并提交数据到第三方url

3) 接收来自第三方 url 的响应并仅<div id="result">status:success</div>http://www.mydomain.com/recievedata页面中打印。

4) 为 web 视图添加事件监听器,如下所示

webView.addEventListener('load', function(data) 
{ 
   //Add condition to check if the loaded web page has any div with id = result (to check if this is /recievedata page)
    alert(webView.evalJS("document.getElementById('result').innerHTML"));
});

上面的警报将打印结果status:success,在 webview 加载事件中读取它并在 web 中相应地采取措施。

这对我来说可以。

于 2012-10-17T09:05:27.703 回答
0

为什么不使用 HTTP 客户端获取它,而不是将其加载到 WebView 中?这更干净,并且基于更多标准:

var xhr_get = Ti.Network.createHTTPClient({
    onload : function(e) {
        // Here is your "status:success" string
        var returnValue = this.responseText;
    },
    onerror : function(e) {
        Ti.API.info(this.responseText);
        Ti.API.info('CheckUserProgressOnActivity webservice failed with message : ' + e.error);
    }
});
xhr_get.open('GET', 'http://www.mydomain.com/checkuser?uid=20121');
xhr_get.send();
于 2012-10-16T02:26:48.100 回答