2016-12-30 3 views
-1

Мне нужно отправить данные на сервер (используя сообщение с формой) и получить статус возврата, чтобы я мог вернуть разрешение или отклонить. Я не могу использовать ajax, чтобы сделать запрос ни XMLHttpRequest. Я хотел бы знать, как я могу отправить форму и вернуть обещание (например, @SomeKittens answer «конструктор обещаний»). custom.js:Статус запроса Http

var myfunction = 
{ 
    submitForm: function() 
    { 
    // Create form 
    var form = document.createElement('form'); 
    form.setAttribute('action', 'server.php'); 
    form.setAttribute('method', 'POST'); 

    var input1 = document.createElement('input'); 
    input1.setAttribute('type', 'hidden'); 
    input1.setAttribute('name', 'params'); 
    input1.setAttribute('id', 'params'); 
    input1.setAttribute('value', 'myvalue'); 

    form.appendChild(input1); 

    // Create iframe and append form to it 
    var $frame = $('<iframe style="width:500px;height:400px;display:none;">'); 
    $('body').html($frame); 
     setTimeout(function(){ 
     var doc = $frame[0].contentWindow.document; 
     var $body = $('body',doc); 
     $body.html(form); 

     // submit form 
     $(form).submit();}, 1); 
    } 
} 

index.html:

<html> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
    <script src="custom.js"></script> 
    </head> 
    <body> 
    <script> 
     myfunction.submitForm().done(function() { 
     alert('It works'); 
     }).fail(function() { 
     alert('Failed');}); 
    </script> 
    </body> 
</html> 

Благодаря

+1

'Я не могу использовать ajax, чтобы сделать запрос ни XMLHttpRequest.' - во-первых, если вы не можете использовать AjAX, то, конечно, вы не можете использовать xhr, так как xhr - это то, как начинать ajax! и если вы не можете использовать ajax, тогда вы в основном останетесь с использованием стандартного механизма отправки формы ... что приводит к загрузке новой страницы ... так что обещания полностью исключаются. –

+0

@Jaromanda, I знаю (я видел в этом ответе: http://stackoverflow.com/questions/8039402/where-is-jquery-ajax-defined-in-the-jquery-source-code). Я должен использовать обещание по возвратным данным (сервер будет возвращать данные) и показывать «он работает» или «он не работает» на основе состояния – dramans

+0

Не знаете, как любой ответ в этом вопросе поможет вам не использовать «AJAX или XHR» - потому что этот вопрос и ответ - все о jQuery.ajax ..., который является AJAX, который использует XMLHttpRequest - которые специально не «разрешены» для использования в вашем вопросе –

ответ

1

Это не может быть сделано с помощью JavaScript. Сообщение формы создает новый запрос на сервер, поэтому вы будете перенаправлены на другую страницу, кроме той, в которой вы находитесь, в вашем случае это 'server.php', который, в свою очередь, обрабатывает запрос и возвращает ответ так же, как и любую другую страницу на сервер. Его до вас, где вы идете дальше от 'server.php'

Чтобы отслеживать состояние сервера, вы можете вернуться с 'server.php' на запрашивающую страницу и либо использовать строку запроса в возвращающемся URL-адресе, либо добавить свои данные на сервер сессии и поймать их, когда на странице.

+0

, сервер вернет некоторые данные, и мне нужно догнать (я не знаю, t знать, чтобы сделать это в javascript, поскольку submit не возвращает ничего), что данные и показать «это работает» (через обещание) или «Сбой». – dramans

+0

Отметьте: http://stackoverflow.com/questions/754761/read-session-value-with-javascript – KAD

+0

'Я не знаю, чтобы сделать это в javascript, поскольку submit ничего не возвращает' - вам нужно использовать AJAX, jQuerey.ajax возвращает «обещание» (своего рода), основным механизмом jQueery.ajax является XMLHttpRequest ... oops, вы не можете использовать его. Кажется, что вы просили невозможно –

Смежные вопросы