PhoneGap/ChildBrowser - 将应用程序表单发布到 ChildBrowser
Posted
技术标签:
【中文标题】PhoneGap/ChildBrowser - 将应用程序表单发布到 ChildBrowser【英文标题】:PhoneGap/ChildBrowser - POST App Form to ChildBrowser 【发布时间】:2012-02-16 19:11:27 【问题描述】:我正在使用 PhoneGap 构建一个 iPhone 应用程序。我正在使用 ChildBrowser 插件。
如果我在应用程序中有一个带有用户名/密码的表单,我是否可以将这些信息发布到 www.mydomain.com/login.php 之类的 URL 并在 ChildBrowser 中打开?
请告诉我。
谢谢。
【问题讨论】:
【参考方案1】:您当然可以将 GET 参数传递给childBrowser.showWebPage()
。
您可以在您的应用程序中拦截表单的提交并收集传递的字段名称和值(假设这是一个登录表单,所以说用户名和密码)并将它们作为参数传递给在 ChildBrowser 中打开的 URL。
childBrowser.showWebPage('https://www.mydomain.com/login.php?username='+username+'&password='+password)
这是一个用于演示目的的相当简单的版本。让它变得更好并不需要太多。
问题当然是它是通过 GET 发送的。如果您的登录表单需要 POST 并且您无法更改它,那么您可能会遇到问题。
编辑:
如果 POST 是您唯一的选择,也许您最好使用 AJAX 发布到表单而不是使用子浏览器。
【讨论】:
这是我的问题。登录表单只需要 POST。【参考方案2】:我一直在寻找解决方案,并结束了开发。这在 iPhone 的 childbrowser 中并不是开箱即用的。 所以,这里是我添加到插件中的代码。 仅供参考,数据应该是格式为:arg1=value1&arg2=value2&foo=bar
的字符串ChildbrowserViewController 我在那里添加了以下方法:
- (void)postURL:(NSString*)url data:(NSString*)data
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: [NSURL URLWithString:url]];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: [data dataUsingEncoding: NSUTF8StringEncoding]];
[webView loadRequest: request];
webView.hidden = NO;
子浏览器命令 我在 showWebPage 方法中添加了以下代码:
NSString* method = [ options objectForKey:@"method"];
if ([method isEqualToString:@"POST"])
[childBrowser postURL:url data:[options objectForKey:@"data"]];
else
[childBrowser loadURL:url];
HTH! 米尔顿。
【讨论】:
以上是关于PhoneGap/ChildBrowser - 将应用程序表单发布到 ChildBrowser的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap ChildBrowser 通过自定义 iOS url 打开外部 URL