0

私は jQuery の AJAX と Codeigniter PHP フレームワークを使用してサインアップ フォームに取り組んでいますが、codeigniter はそれほど重要ではありませんecho form_open();。奇妙なものやその他の奇妙なものが表示された場合でも、心配しないでください。それらはすべて codeigniter です。

さて、これがコードに関する私の問題です。以下のjqueryを使用して簡単な投稿を試みました(PHPコードでは、他のすべてが省略され、単純なecho 'hello, world!';関数が追加されました。機能し、hello, world!が表示されます):

 $.post( 'ajax_signup_username' ,function(result){

                $(span_error).html(result);

            } );

しかし、投稿データを渡しても機能しません (結果を出力しません。以下に記述された完全な PHP コードを使用していることに注意してください)。

$.post( 'ajax_signup_username', {php_username_error:username_value} ,function(result){

                $(span_error).html(result);

            } );

SO を検索してみましたが、提供されたソリューションではこれを解決できませんでした。何が問題なのですか?

完全なコードは次のとおりです。

以下はhtmlコードです:

<body>

<?php $attr = array( 'onsubmit' => 'return final_val()' ); echo form_open('formValidation/signUp',$attr); ?>


<p>Username: <input type="text" onBlur="username_val()" value="<?php echo set_value('username')?>" name="username" maxlength="50" /><span name="username_error"><?php echo form_error('username'); ?></p></span>


<p>Email: <input type="text" onBlur="email_val()" value="<?php echo set_value('email')?>" name="email" maxlength="50" /><span name="email_error"><?php echo form_error('email'); ?></p></span>


<p>Password: <input type="password" onBlur="pass_val()" value="<?php echo set_value('pass')?>" name="pass" maxlength="50" autocomplete="off"/><span name="pass_error"><?php echo form_error('pass'); ?></p></span>


<p>Password Confirm: <input type="password" onBlur="pass_val()" value="<?php echo set_value('passconf')?>" name="passconf" maxlength="50" autocomplete="off" /><span name="passconf_error"><?php echo form_error('passconf'); ?></p></span>



<p><input type="submit" value="SIGN UP!" name="signup"/></p>


</form>



</body>

以下はphpコードです:

function ajax_signup_username(){

    $username = $_POST['php_username_error'];

    $uniqueUn = $this->db->prepare("SELECT * FROM iowfiwefwmember WHERE username=:username");

    $uniqueUn->bindParam(':username', $username);

    $uniqueUn->execute();

    $count1 = $uniqueUn->fetch();

    if( $count1 == FALSE ){

        echo 'USERNAME AVAILABLE!';

    }else{

        echo 'USERNAME IS ALREADY USED!';

    }

}

以下はJavaScriptコードです:

function username_val(){

        $.ajaxSetup({ cache : false });

            username_value = $("input[name='username']").val();

            span_error = "span[name='username_error']";

            //$(span_error).load('ajax_signup_username', {php_username_error:username_value}); <-- also doesn't work [ $.ajaxSetup() is set to POST ]

            $.post( 'ajax_signup_username', {php_username_error:username_value} ,function(result){

                $(span_error).html(result);

            } );

    }
4

1 に答える 1

1

ラップトップの前で何時間も馬鹿げた顔をした後、これがコードイグナイターの問題であることがわかりました。問題の原因となったCSRF保護をオンにしましたCSRF 機能をオフにすると、問題なく動作します。若者の皆さん、同じ間違いを繰り返さないようにしてください。乾杯!:D

于 2012-05-25T05:51:31.623 に答える