Http请求状态

时间:2016-12-30 09:28:32

标签: javascript php jquery http

我需要向服务器提交数据(使用带表单的帖子)并捕获返回状态,以便我可以返回解决方案或拒绝。我不能使用ajax来请求XMLHttpRequest。我想知道如何提交表单并返回一个承诺(如@someKittens answer on the promise constructor')。 custom.js:

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 个答案:

答案 0 :(得分:1)

使用javascript无法做到这一点。表单提交会向服务器创建一个新请求,因此您将被定向到另一个页面而不是您所在的页面,在这种情况下它是'server.php',而'server.php'反过来将处理请求并返回响应,就像任何一个服务器上的其他页面。由'server.php'

决定您接下来的位置

为了跟踪服务器的状态,您可以从<%= form_for([@request, @work]) do |f| %> <% if @request.type == "StaffRequest" %> <%= (f.hidden_field :performer_type, value: "Employee") %> <%= (f.collection_select :performer_id, Employee.all, :id, :name) %> <% elsif @request.type == "CarRequest" %> <%= (f.hidden_field :performer_type, value: "Car") %> <%= (f.collection_select :performer_id, Car.all, :id, :select_info) %> <% end %> <%= f.submit 'OK' %> <% end %> 返回到请求页面,并在返回的URL中使用查询字符串,或者将数据添加到服务器会话中并在重新启动时捕获它们这页纸。