Iphone 在UIWebView中提交表单

Iphone 在UIWebView中提交表单,iphone,web-services,uiwebview,Iphone,Web Services,Uiwebview,我在UIWebView中有一个与web服务交互的表单,当我提交表单时,数据会被发送到web服务,它会将结果返回到另一个UIWebView。这两个UIWebView位于导航控制器下,因此当用户提交表单时,它将滑动到另一个视图以显示结果。有人能告诉我怎样才能做到这一点吗?我应该在表单元素中的“action”属性中填写什么?如何将用户输入返回到应用程序,以便使用web服务?我是这个领域的新手,任何帮助都将不胜感激。谢谢 更新: 有没有办法将表单数据从web视图保存回我的程序?我认为最好在单击提交按钮

我在UIWebView中有一个与web服务交互的表单,当我提交表单时,数据会被发送到web服务,它会将结果返回到另一个UIWebView。这两个UIWebView位于导航控制器下,因此当用户提交表单时,它将滑动到另一个视图以显示结果。有人能告诉我怎样才能做到这一点吗?我应该在表单元素中的“action”属性中填写什么?如何将用户输入返回到应用程序,以便使用web服务?我是这个领域的新手,任何帮助都将不胜感激。谢谢


更新:


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

如果我正确理解了您的问题,我认为以下步骤将帮助您提供解决方案

  • 在表单操作中,您需要将URL写入web服务
  • 在表单中,输入字段的名称应与web服务所需的参数名称相匹配
  • 在第一个UIWebView导航控件中,创建具有第二个UIWebView的screen对象,并将web服务的响应设置为该对象的实例成员
  • 在第一个UIWebView导航控件中,需要编写
    [自我呈现ModalViewController:WebView2对象动画:是]
  • 在拥有webView2的屏幕中,在加载第二个UIWebView之前解析响应。并使用javascript将其注入显示的页面
  • 你可以使用

    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调用该方法并从中获取数据。谢谢!第一个对我来说似乎更容易理解。