Отправить форму в UIWebView - PullRequest
       0

Отправить форму в UIWebView

9 голосов
/ 19 сентября 2011

У меня есть форма в UIWebView для взаимодействия с веб-службой. Когда я отправляю форму, данные отправляются веб-службе, и она возвращает результат в другой UIWebView. Два UIWebView находятся под контроллером навигации, поэтому, когда пользователь отправляет форму, он перемещается в другое представление для отображения результата. Может кто-нибудь указать мне, как я могу этого достичь? Что мне заполнить в атрибуте «action» в элементе формы? Как я могу получить пользовательские данные обратно в приложение, чтобы я мог использовать веб-сервис? Я новичок в этой области, любая помощь будет оценена. Спасибо!


Обновление:

Есть ли способ сохранить данные формы из веб-представления обратно в мою программу? Я думаю, что лучше сохранить данные формы обратно в программу (то есть сохранить параметры в nsstring), когда я нажму кнопку отправки, а затем начать запрашивать веб-сервис.

Ответы [ 2 ]

12 голосов
/ 19 сентября 2011

Вы можете использовать функцию

stringByEvaluatingJavaScriptFromString

для запуска метода javascript из цели c и получения возвращаемого значения из этого метода.

Например

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

и в javascript

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

И я сомневаюсь, что здесь вы можете захотеть сделать наоборот (вызовите метод obj-c из javascript),Это не может быть сделано напрямую, вот как это можно обойти.

Установите UIWebViewDelegate и реализуйте метод webView: shouldStartLoadWithRequest: navigationType :.В своем коде JavaScript перейдите к некоторому фальшивому 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;
}
1 голос
/ 19 сентября 2011

Если я правильно понял вашу проблему, я думаю, что следующие шаги помогут вам найти решение.

  1. В действии формы необходимо указать URL-адрес веб-службы.
  2. В вашей форме имя поля ввода должно совпадать с именем параметров, ожидаемых для веб-службы.
  3. В вашем первом элементе управления UIWebView Navigation, создайте объект экрана со вторым UIWebView и установите ответ веб-службы на экземпляр элемента объекта.
  4. В вашем первом элементе управления UIWebView Navigation,вам нужно написать
    [self presentModalViewController:webView2Object animated:YES];
  5. На экране наличия webView2 проанализируйте ответ перед загрузкой второго UIWebView.и вставьте его с отображаемой страницей, используя JavaScript.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...