2017-02-05 18 views
0

私は単純なコード: ログインページを書きました。ユーザー名をPHPページに送信しようとしています。POSTできない、405メソッドが許可されていません

ログインページでsubmitをクリックすると、405 Method Not Allowedが届きました。

私は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 Method Not Allowedメッセージで問題を再現できませんでしたが、PHPファイルで送信しているヘッダーと関係があります。なぜ私はあなたが達成しようとしているもののためにそうするべき理由を見ていないので、あなたはそれらを送信していたのか分かりません。

これらのヘッダーをPHPファイルから実際に送信する必要がある場合は、この回答が役に立ちません。私は以下のステップを試して、あなたが望む機能を私が信じているものを得ることができました。

まず、閉鎖体タグの前に右にスクリプトを移動することができます:

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

<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を与えることができます

次に、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; 
} 

あなたはもちろん、あなたが考案したものは何でも、ユーザ名のルックアップ方式にそれを変更する必要があります。 submitをクリックすると、#result div内のHTMLページに「Disney」と表示されます。これはあなたの希望する機能だと思います。

関連する問題