1

ページ dslogin.php がサイド パネルから

<div id="workarea"> </div>  

ページをロードするリンクは非常に単純です。

<a id=\"ds_action\" href=\"javascript:outputResults('dslogin.php','workarea','db=$k');\"> Connect to $k</a>

しかし、dslogin が $_GET["db"] を取得すると、ワークエリア div に表示されるフォームが生成されます。フォームもシンプルになりました。

function getCredentials($db,&$u,&$p)
{
echo "Connecting to Database $db: <br/>\n";
echo "<form id=\"dblogin\"  action=\"dsconnect.php\" method='post'> \n" ;
echo" Please enter your username and password if you wish. <br/> \n" ;
echo "Username: <input type='text' name='username' > \n " ;
echo "Password: <input type='password' name='password' > \n" ;
echo "<input type='submit' value='Login' name='Login'> <br/> \n" ;
echo "<input type='hidden' value=$db name='database'> <br/> \n" ;
echo "</form>" ;
echo "<div id=\"local\"> </div>";
}

ユーザーがフォームを送信すると、次のコードで ajax コードがそれをインターセプトするはずです

  <script>
 $(document).ready(function() 
 {
    $('#dblogin').submit(function() 
    { // catch the form's submit event
        $.ajax({ // create an AJAX call...
            data: $(this).serialize(), // get the form data
            type: $(this).attr('method'), // GET or POST
            url: $(this).attr('action'), // the file to call
            success: function(response) { // on success..
                $('#local').append(response); // update the DIV
            }
        });
        return false; // cancel original event to prevent form submitting
    });
    });
</script>

これは機能していません。私の考えでは、ページが最初に ajax スクリプトでロードされたとき:

$(document).ready(function() 
{
    $('#dblogin').submit(function()  ...

まだロードされていないため、dblogin フォームへのリンクはありません。

送信をクリックすると、アクション ページ dsconnect.php が表示されますが、その出力がフォーム ページに追加されるはずです。

これを機能させる方法はありますか?

4

1 に答える 1

1

デリゲート イベントに変更します。

$('#{containerid}').on('submit', '#dblogin', function()  ...

あなたの場合のコンテナは#workareaそれほど明確ではありませんでしたが。

于 2013-01-15T03:11:23.537 に答える