Вы не упоминаете, какие технологии вы используете на сервере, поэтому я постараюсь сделать этот сервер независимым.
Вы должны указать действие формы для другого URL-адреса, чем ваш веб-сервис (в rails это было бы какое-то другое "действие контроллера").
<form id="input_form" action="your/non-SOA/action">
<input type="text" name="user" />
<input type="submit" value="Submit"/>
</form>
Где-то еще (возможно, в js-файле, загруженном в заголовок html), у вас должен быть код javascript, который изменяет способ обработки события click "click":
$(function(){ // jQuery DOM ready function.
var form = $("#input_form");
var submit_button = $("#input_form .input[type=submit]");
submit_button.bind('click', function() {
// serialize form with JSON and send it here
});
});
Этот код будет выполняться, только если включен JavaScript. Если это не так, то форма будет отправлена на your/non-SOA/action
через запрос POST, обычно в форме «ассоциативного хэша» в параметрах действия. Таким образом, вы должны преобразовать этот хэш в структуру json на сервере и отправить его в соответствующий веб-сервис.
На вашем сервере это будет выглядеть так (псевдокод):
function your.non-SOA.action(params)
// you might need more treatment than just doing to_json, depending on your ws syntax
serialized_text = params['input_form'].to_json
myWebservice = Webservice.new('your-webservice-uri')
try
myWebservice.send(serialized_text)
catch(exception e)
// handle exceptions
end
end