0

問題が発生しています。フォームの onsubmit='function();' を使用して、フォームから get リクエストを送信しようとしています。そしてアヤックス。

<html>
<head>
<script type='text/javascript'>
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function(){
        window.alert("readystate change: " + xmlhttp.readyState + " , " + xmlhttp.status); 
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
            document.getElementById('adminPanel').innerHTML = xmlhttp.responseText;
        }
    }

    function submit_password(){
        xmlhttp.open("GET","./src/admin_pass.php");
        xmlhttp.send();         
    }
</script>
</head>
<body>
    <form onsubmit='submit_password();'>
        <input type='password' placeholder='PASSWORD'>
    </form>
    <div id='adminPanel'>
    </div>
</body>
</html>


<?php
    echo "test text";
?>

フォーム送信を使用して関数内から呼び出しを行うと、 status=0 エラーが発生します。関数を削除してすべてを一度に実行すると、正常に実行されます。どうしてこれなの?私はしばらくグーグルで検索してきましたが、私がやろうとしているのと同じことをする例は見つかりません。最終的にはjQueryのajax関数を使うことになると思いますが、これだけは絶対に入れないようにしたかったのです。

編集:わかりましたので、XMLhttprequest status=0 は http 接続エラーがあったことを意味するということだけを知ることができました。私のURLに何か問題があるのでしょうか?私が持っている構造は次のように見えるので、そうではないと思います:

root
    src
        admin_pass.php

実際に http://localhost/src/admin_pass.php を入力する必要がありますか? 以前のテスト作業で相対 URL を使用したことがありますが、問題ありませんでした。

編集:完全な例を追加

修繕:

正直なところ、なぜこれで問題が解決したのかわかりません。いくつかの回答から、問題がフォームの使用にある可能性があることがわかりました。不要と判断しました。

<html>
<head>
    <title>Admin Page</title>

<script type='text/javascript'>     
    function submit_password(){
        var xmlhttp = new XMLHttpRequest();

        xmlhttp.onreadystatechange = function(){
            window.alert("readystate change: " + xmlhttp.readyState + " , " + xmlhttp.status); 
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
                document.getElementById('adminPanel').innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","./src/admin_pass.php",true);
        xmlhttp.send();         
    }
    function check_enter(e){
        if(e.keyCode == 13){
            submit_password();
        }
    }
</script>
</head>
<body>
<input id='password' type='password' placeholder='PASSWORD PLEASE' onkeyup='check_enter(event);'>

<div id='adminPanel'> 
</div>
</body>
</html>
4

2 に答える 2

0

グローバルに宣言しないでください。代わりに上記のコードを試してください。

<script type='text/javascript'>
function submit_password(){
var xmlhttp = new XMLHttpRequest();
     xmlhttp.onreadystatechange = function(){
     window.alert("readystate change: " + xmlhttp.readyState + " , " + xmlhttp.status); 
     if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
        document.getElementById('adminPanel').innerHTML = xmlhttp.responseText;
     }
   }
    xmlhttp.open("GET","./src/admin_pass.php");
    xmlhttp.send();         
}
</script>
于 2013-05-17T18:22:53.767 に答える