2015-09-11 95 views
0

我很難找出爲什麼我的AJAX代碼在表單提交中發送兩次。AJAX jQuery表單提交發送兩次POST&OPTIONS

選項請求和POST請求 - 兩個狀態消息都是200。 POST請求成功並返回我想要的內容,這樣很好。我不希望發生OPTIONS請求。

認爲它可能與CORS有關或解綁定提交事件處理程序?

如果任何人都可以提供幫助,那就太好了。

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
<form id="loginform"> 
     Username: <input type="text" class="rname" name="username" value=""/> 
     Password: <input type="text" class="rpass" name="password" value=""/> 
     <input type="submit" value="Submit" /> 
</form> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
<script type="text/javascript"> 

scripts = function() { 
    var _t = this; 
    var authenticateUrl = "http://..."; 
    this.events = function() { 
     $('#loginform').submit(_t.loginEvent); 
    }; 
    this.loginEvent = function (event) { 
      event.preventDefault(); 
      var $form = $(this); 

      var _name = $form.find(".rname").val(); 
      var _pass = $form.find(".rpass").val(); 

      var submitData= {username: _name,password: _pass}; 
      submitData = JSON.stringify(submitData); 

      $.ajax({ 
       type: 'POST', 
       contentType: "application/json", 
       dataType: 'json', 
       url: authenticateUrl,  
       data: submitData, 
       success: function(data) { 
        console.log("Success loginEvent"); 
        if (data.error) { 
         console.log("Unsuccessful Login"); 
        } else { 
         console.log("successful Login"); 
        } 
       } 
      }); 
     }; 

    this.init = function() { 
     _t.events(); 
    }; 
    this.init(); 
    return (this); 
}; 

var LZ = new scripts(); 
</script> 
</body> 
</html> 
+0

可能的重複[爲什麼我得到一個OPTIONS請求,而不是GET請求?](http://stackoverflow.com/questions/1256593/why-am-i-getting-an-options-request-instead-請求的請求) –

回答

0

它沒有什麼奇怪的,如果你得到正確的答覆。

Options請求用於允許客戶端確定與資源相關的選項和/或需求或服務器的功能,而不會暗示資源操作或啓動資源檢索。

OPTIONS請求是我們所說的跨域資源共享(CORS)中的pre-flight請求。

當你在不同的來源提出請求時,它們是必需的。

+0

嗨,隊友,謝謝你的回答。有道理,我有點困惑,因爲我用POSTMAN和一個正常形式的方法和動作,只有POST狀態消息,所以它必須與AJAX請求本身? – roshambo

+0

常規網頁可以使用XMLHttpRequest對象從遠程服務器發送和接收數據,但它們受限於相同的源策略。擴展不限於此。擴展可以與遠程服務器通信,只要它首先請求跨源許可。因此,如果使用POSTMAN,因此它需要預先請求,因爲它是分機 – maddygoround

+0

它與服務器有關。 – maddygoround