iphone - 在 UIWebView 中提交表单

标签 iphone web-services uiwebview

我在 UIWebView 中有一个表单来与 Web 服务交互,当我提交表单时,数据会发送到 Web 服务,并将结果返回到另一个 UIWebView。这两个 UIWebView 位于导航 Controller 下,因此当用户提交表单时,它会滑动到另一个 View 以显示结果。谁能指出我如何才能实现这一目标?表单元素中的“action”属性应该填写什么?如何将用户输入返回到应用程序以便我可以使用 Web 服务?我是这个领域的新手,任何帮助将不胜感激。谢谢!

<小时/>

更新:

有没有办法将网页 View 中的表单数据保存回我的程序?我认为当我单击提交按钮时,最好将表单数据保存回程序(即将参数存储到 nsstring 中),然后开始查询 Web 服务。

最佳答案

您可以使用

stringByEvaluatingJavaScriptFromString

用于从 objective-c 触发 javascript 方法并从该方法获取返回值的函数。

例如

//Calling the getTheUsername in the javascript.
NSString *userName = [yourWebView stringByEvaluatingJavaScriptFromString:@"getTheUsername()"];

在 JavaScript 中

//Method in javascript
function getTheUsername()
{
return userNameVariable;
}

我怀疑你可能想要反之亦然(从 javascript 调用 obj-c 方法)。这不能直接完成,这是解决方法。

设置一个UIWebViewDelegate,并实现方法webView:shouldStartLoadWithRequest:navigationType:。在您的 JavaScript 代码中,导航到某个虚假 URL,该 URL 对您要传递给应用程序的信息进行编码,例如: window.location = "someLink://yourApp/form_Subscribed:param1:param2:param3"; 在您的委托(delegate)方法中,查找这些虚假 URL,提取您需要的信息,采取任何适当的操作,然后返回 NO 以取消导航。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

    NSLog(@"%@",[[request URL] query]);

    return YES;
}

关于iphone - 在 UIWebView 中提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7466875/

相关文章:

web-services - 使用 Perl 将文件上传到外部服务器

java - 网络服务 : How to store mal-formed XML in webservices?

javascript - DOM 就绪的 iOS UIWebView

iphone - 如何等待动画在 viewDidDisappear 中完成?

iphone - 升级已提交到应用商店的应用的公司名称

iphone - LeftBarButtonItem 在 iOS 7 上首次启动后不显示

javascript - 保存 UIWebView ActiveElement 以备后用

php - 如何将带有xml的url请求发送到php页面

具有负载平衡的 REST 服务

ios - 加载非 http ://url scheme 后的操作