2017-02-05 297 views
0

我寫了一個簡單的代碼: 登錄頁面,我試圖發送用戶名到php頁面。不能POST,405方法不允許

當我點擊提交登錄頁面,我收到405方法不允許。

如果我使用get方法 - 它的工作,但我想發佈,因爲我想發送用戶和傳遞到服務器不在地址。

HTML文件:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <script 
    src="https://code.jquery.com/jquery-3.1.1.min.js" 
    integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" 
    crossorigin="anonymous"></script> 
    <script src="mainjs.js"></script> 
</head> 
<body> 

<form> 
    First name:<br> 
    <input id="fname" type="text" name="firstname" value="Mickey"> 
    <br> 
    Last name:<br> 
    <input id="lname" type="text" name="lastname" value="Mouse"> 
    <br><br> 
    <input type="submit" value="Submit" onclick="testfunc();"> 
</form> 

<div id='result'></div> 
<p>If you click the "Submit" button, the form-data will be sent to a page called "action_page.php".</p> 

</body> 

JavaScript: 

function testfunc(){ 
    alert("MainJS"); 
    var fname = $('#fname').val(); 
    var lname = $('#lname').val(); 

    $.post('getdata.php', {fname:fname, lname:lname}, function(data){ 
     alert(data); 
     $('#result').html(data); 
    }); 
} 

PHP文件:

<?php 
    header('Access-Control-Allow-Origin: *'); 
    header("Access-Control-Allow-Headers: Origin, X-Requested-With,Content-Type, Accept"); 
    header('Access-Control-Allow-Methods: GET, POST, PUT'); 
    echo "Success"; 
?> 

謝謝!

回答

0

我無法用405方法不允許的消息複製您的問題,但我有一種感覺,它與您在PHP文件中發送的那些標頭有關。我不知道你爲什麼要發送這些內容,因爲我沒有看到你想要完成的原因。

如果你真的需要從PHP文件發送這些頭,這個答案可能沒有幫助。我嘗試了下面的步驟,並能夠得到我認爲是您所需的功能。

首先,讓我們的結束標記之前將你的腳本到右:

<script 
    src="https://code.jquery.com/jquery-3.1.1.min.js" 
    integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" 
    crossorigin="anonymous"></script> 
<script src="mainjs.js"></script> 
</body> 

然後,讓刪除的onclick並給予提交按鈕,我們可以從JavaScript,而不是搶ID:

<input type="submit" value="Submit" id="submit"> 

接下來,在mainjs.js文件,你應該選擇提交按鈕,然後添加一個事件偵聽器,它與舊testfunc()的內容:

var submit = document.getElementById('submit'); 

submit.addEventListener('click', function(event) { 
    event.preventDefault(); 
    alert("MainJS"); 
    var fname = $('#fname').val(); 
    var lname = $('#lname').val(); 

    $.post('getdata.php', {fname:fname, lname:lname}, function(data){ 
     alert(data); 
     $('#result').html(data); 

    }); 
}); 

請注意,'事件'作爲參數傳遞給addEventListener中的匿名事件處理函數。您必須在此事件上調用preventDefault(),以便表單不會提交,這會重新加載整個頁面。

我不知道你在你的PHP文件在做什麼,但這裏是我訪問getdata.php:

<?php 

if ($_REQUEST['fname'] == 'Mickey' && $_REQUEST['lname'] == 'Mouse') { 
    $username = 'Disney'; 
    echo $username; 
} 

當然,你應該改變任何用戶名的查找方案已制定。當我點擊提交時,我看到'迪斯尼'出現在#result div的HTML頁面中,我認爲這是你想要的功能。