2017-01-13 1 views
-3

Im пытается отправить форму, как таким образом:Jquery: Отправить форму без обновления

<form id="myForm" action="http://example.com/somefile" method="POST"> 
... 
... 
... 
<input type="submit" id="sendForm" value="send"> 
</form> 

действие связать его с веб-сервиса, разработанного другим разработчиком, поэтому, когда я отправить форму, то вебсервис отвечает мне с URL-адресом (http://www.example.com/thanks), я хочу сделать это, чтобы избежать этого ответа на веб-сервисы и на месте изменить URL-адрес перенаправления, возможно ли это?

Ive пытался тоже сделать это с:

<script> 
    $("#sendForm").click(function() { 
     if (form_check_validation()) { 
      $("#myForm").submit(); 
      window.location.replace("http://stackoverflow.com");    
     } else { 
      return false; 
    //      event.preventDefault(); 
     } 

    }); 
</script> 

но не работает.

Благодаря

Примечание: вебсервис находится на другом сервере, так что им, имеющих проблемы с междоменном происхождения.

+0

Вы не можете сделать это обычным способом. Если вы не используете Ajax и т. Д. –

+0

И форма, и параметр 'window.location' требуют навигации, и страница может перемещаться только один раз, один или другой. Передача данных формы через Ajax может быть возможностью при условии, что страница и служба удовлетворяют [правилам одного и того же происхождения или соглашаются разрешить перекрестное происхождение] (https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy). В противном случае вам может понадобиться серверный слой для посредничества - отправьте ему данные формы, чтобы он мог передать это вместе с сервисом, а также управлять результирующим редиректом для клиента. –

ответ

0

Предполагая, что эта услуга позволяет перекрестное происхождение и вы не хотите/нужно перейти на другую страницу, то почему бы не использовать Ajax? Вы можете просто создать и ajax-вызов, используя $.ajax.

http://api.jquery.com/jquery.ajax/ см

Пример:

$.ajax({ 
    url : "POST_URL", 
    type: "POST", 
    data : formData, 
    success: function(data, textStatus, jqXHR) 
    { 
     // Handle server response 
    }, 
    error: function (jqXHR, textStatus, errorThrown) 
    { 
     // Handle error 
    } 
}); 
+0

Что касается междоменных проблем? OP хочет вызвать веб-службу на другом сервере. – nnnnnn

+0

Я предположил, что он и этот разработчик работают вместе и что у него есть перекрестное происхождение, разрешенное (AJAX на самом деле является тегом в его сообщении) .. но я обновлю ответ ... –

+0

yep, я хочу позвонить на другой сервер! не в моих! возникают междоменные проблемы:/ – Rodrigo

0

Вы можете сделать это с помощью Ajax. Я также рекомендую вам привязать прослушиватель событий submit к форме, чтобы подача работала правильно также при нажатии Enter.

$("#myForm").submit(function (event) { 
    if (form_check_validation()) { 
     form_submit(this); 
    } else { 
     // ... 
    } 
    event.preventDefault(); 
}); 

function form_submit (form) { 
    $.ajax({ 
     url: form.action, 
     type: form.method, 
     data: $(form).serialize() 
    }); 
}