0

基本的に、JQuery + AJAXを使用してPHPファイルから何かを返そうとしていますが、何も返さない方法もあります。問題を見つけようとしましたが、うまくいきません。PHPファイルは完全に機能します。

なぜ機能しないのか誰にも教えてもらえますか?

$("#iForm").submit( function(){
    var user = $("input:[name=username]").val();
    var password = $("input:[name=password]").val();
    var dbName = $("input:[name=dbName]").val();
    var server = $("input:[name=server]").val(); 


        $.get("1.php", {username: user, password: password, dbName: dbName, server: server },function(data){
            $("p").html (data);
            return false;
            })


    })

})

  </script>
<!-- Yes or No form -->
<form  name="yN" style= "display: show; margin-left: auto; margin-right: auto; width: 6em">
<input type="radio" name="yN" value="1">yes</input>
<input type="radio" name="yN" value="0">no</input>
<button id=1 >click me!</button>
</form>

<!-- Login Form -->
<form id="iForm"  style= "display: show">
<label id="username" >Username</label>
<input id="username" name="username"/>
<label id="password">Password</label>
<input id="password" name="password" />
<label id="server" >Server</label>
<input id="server" name="server"/>
<label id="dbName" >dbName</label>
<input id="dbName" name="dbname"/>

<input type="submit" value="submit" />
<p> </p>

PHPファイル

function createfile ($dbFile) {
        //Creates File and populates it.
        $fOpen = fopen($dbFile, 'w');
global $username, $password, $server, $dbname;
            $fString .= "<?php\n";
            $fString .= "// Database Constants\n";
            $fString .= "\$DB_SERVER =" . "\"" . $server . "\";\n";
            $fString .= "\$DB_USER =" . "\"" . $username . "\";\n";
            $fString .= "\$DB_PASS =" . "\"" . $password . "\";\n";
            $fString .= "\$DB_NAME =". "\"" . $dbname . "\";\n";
            $fString .= "?>";

        fwrite($fOpen, $fString);
        fclose($fOpen);
return true;
}




$username = $_GET['username'];
$password = $_GET['password'];
$server = $_GET['server'];
$dbname = $_GET['dbname'];


try {
$db = new PDO ('mysql:host=' .$server.';dbname='.$dbname,$username,$password);

if ($db) { //if succesful at connecting to the DB

if (file_exists($dbFile)){
    if (is_readable($dbFile) && is_writable($dbFile)){ 

        //Creates File, populates it and redirects the user

    if (createfile($dbFile)) { 
    echo "finito";
    exit ();
            }


        } else { 

        echo "The file {$dbFile} cannot be accessed. Please configure the file manualy or grant Write and Read permission.";  }

    } else {

        //Creates File, populates it and redirects the user

    if (createfile($dbFile)) {

    echo "finito";
    exit ();
            }

        }


}

} catch (PDOException $e) { //Catchs error if can't connect to the db.
    echo  'Connection failed: ' . $e->getMessage();
}





?>
4

2 に答える 2

2

あなたの問題が「falseを返す」がないことであると仮定します。またはハンドラーで次のコードを試してくださいe.preventDefault()submit

$("#iForm").submit( function(e){
    e.preventDefault();
    var user = $("input:[name=username]").val();
    var password = $("input:[name=password]").val();
    var dbName = $("input:[name=dbName]").val();
    var server = $("input:[name=server]").val(); 


        $.get("1.php", {username: user, password: password, dbName: dbName, server: server },function(data){
            $("p").html (data);
            return false;
            })


    })

})
于 2012-08-28T13:40:30.653 に答える
2

セレクターが間違ってい:ます。属性セレクターにはありません。フォームの送信を防ぐ必要があるため、送信ハンドラーに追加する$("input:[name=username]")必要があります。また、ajax コールバックから return false を追加しても、何の効果もありません。$("input[name=username]")arguments[0].preventDefault()

于 2012-08-28T13:45:30.493 に答える