Iphone 在UIWebView中提交表单
我在UIWebView中有一个与web服务交互的表单,当我提交表单时,数据会被发送到web服务,它会将结果返回到另一个UIWebView。这两个UIWebView位于导航控制器下,因此当用户提交表单时,它将滑动到另一个视图以显示结果。有人能告诉我怎样才能做到这一点吗?我应该在表单元素中的“action”属性中填写什么?如何将用户输入返回到应用程序,以便使用web服务?我是这个领域的新手,任何帮助都将不胜感激。谢谢Iphone 在UIWebView中提交表单,iphone,web-services,uiwebview,Iphone,Web Services,Uiwebview,我在UIWebView中有一个与web服务交互的表单,当我提交表单时,数据会被发送到web服务,它会将结果返回到另一个UIWebView。这两个UIWebView位于导航控制器下,因此当用户提交表单时,它将滑动到另一个视图以显示结果。有人能告诉我怎样才能做到这一点吗?我应该在表单元素中的“action”属性中填写什么?如何将用户输入返回到应用程序,以便使用web服务?我是这个领域的新手,任何帮助都将不胜感激。谢谢 更新: 有没有办法将表单数据从web视图保存回我的程序?我认为最好在单击提交按钮
更新:
有没有办法将表单数据从web视图保存回我的程序?我认为最好在单击提交按钮时将表单数据保存回程序(即将参数存储到nsstring),然后开始查询web服务。如果我正确理解了您的问题,我认为以下步骤将帮助您提供解决方案
[自我呈现ModalViewController:WebView2对象动画:是]代码>
stringByEvaluatingJavaScriptFromString
函数,用于从目标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_Submitted:param1:param2:param3";
在委托方法中,查找这些假URL,提取所需的信息,采取任何适当的操作,并返回“否”以取消导航
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSLog(@"%@",[[request URL] query]);
return YES;
}
这是否意味着我必须把请求写在表格中?由于整个表单都在uiwebview中,如何将结果返回到uiview(如表视图中的列表)?如果表单中的输入元素名称与Web服务URL的参数名称相同,则参数将自动与URL一起设置并提交到该URL。然后它将开始加载新页面,您可以在webViewDidStartLoad委托方法中检查它。您的提交按钮是本机UIButton还是HTML按钮元素。这是一个HTML“提交”按钮,这就是为什么我想知道如何将数据保存到我的程序中。然后,您应该使用我在回答中提到的第二个解决方法。导航到submit按钮中的假url,将触发shouldStartLoadWithRequest。在该方法中,使用stringByEvaluatingJavaScriptFromString调用javascript方法。在该javascript方法中,返回所需的数据。知道了!我看了你的解决方案,觉得有点头晕。如果我在web视图外设置一个按钮,并使用javascript将字段值返回到应用程序,该怎么办?好的,如果您有一个native中的submit按钮,请添加一个javascript方法,该方法将返回您所需的数据。使用stringByEvaluatingJavaScriptFromString调用该方法并从中获取数据。谢谢!第一个对我来说似乎更容易理解。