2011-08-02 8 views
0

フォームを送信しようとしています。フォームはhtmlにあります。jqueryを使用してフォームを処理用のPHPページに渡し、json_encodeを使用してユーザーに表示する結果を返すようにしています。 jqueryがそれを提出しているPHPページにincude xxx.phpを追加しようとすると、すべてが殺されます。ここでphpにjquery submit関数が機能しない原因が含まれています

それがレイアウト方法です:これはメインのレイアウト・ページであり、あなたが

<form id="jq_forgot_password" class="forgot_password" action="" method="post" name="password_form">   

<?PHP include 'widgets/recover_pass.php'; ?> 
</form> 

を見ることができるようにフォームが含まれて これは、フォーム自体の内容です:

<!-- Password Recovery Form--> 

    <div class="form_text"> 
    <p> 
     <label for="email">Email:</label> 
     <input type="email" id="recover_email" name="recover_email" placeholder="Enter your email address" class="field_boarder" value="" size="25px" maxlength="255"/> </p> 

    <div class="login_button_container"> 
    <input name="login_button" type="submit" class="login_button" value="Submit"/> 
    </div> 
    </div> 

これは、フォームデータを送信してデフォルトの送信ボタンがページを更新しないようにするjqueryスクリプトです。

// Forgot Password Validation and Post Function 

    $(function(){ 

     $("#jq_forgot_password").submit(function(e){ 

      e.preventDefault(); 



      $.post("widgets/recover_pass_process.php", $("#jq_forgot_password").serialize(), 

      function(data){ 



       if(data.email_check == 'invalid'){ 

         $('div.message_error').hide(); 
         $('div.message_success').hide(); 
         $('div.message_error').fadeIn(); 
         $('div.message_error').html("<div'> Sorry you must enter a valid e-mail address. Try again.</div>"); 

       } else { 

        $('div.message_error').hide(); 
        $('form#jq_forgot_password').hide(); 
        $('div.message_success').fadeIn(); 
        $('div.message_success').html("<div'>You're Password has been sent to" + data.email + ". Thank you </div>"); 

        } 

      }, "json"); 

     }); 

     }); 

これは、jQueryの機能を提出することをPHPファイルであるに提出されています。すべてが正常に動作しますが、私はrecover_pass_processの上部にincludeステートメントを追加した場合

<?php 



    $email_check = ''; 

    $return_arr = array(); 

    if(filter_var($_POST['recover_email'], FILTER_VALIDATE_EMAIL)) { 

     $email_check = 'valid'; 

    } 

    else { 

     $email_check = 'invalid'; 

    } 



    $return_arr["email_check"] = $email_check; 

    $return_arr["email"] = $_POST['recover_email']; 


    echo json_encode($return_arr); 

    ?> 

これ。このようなPHP:

<?php 

    include 'func/user.func.php'; 

    $email_check = ''; 

    $return_arr = array(); 

    if(filter_var($_POST['recover_email'], FILTER_VALIDATE_EMAIL)) { 

     $email_check = 'valid'; 

    } 

    else { 

     $email_check = 'invalid'; 

    } 



    $return_arr["email_check"] = $email_check; 

    $return_arr["email"] = $_POST['recover_email']; 


    echo json_encode($return_arr); 

    ?> 

その後、それはすべて金切り声になりますインクルードファイルに何も入っていなくても停止します。私が別のファイルを取り込もうとしているという事実だけで、それが殺されます。

私は間違って何をしていますか?前もって感謝します!!

+0

を使用すると、他のファイルは、その中には何も持っていませんか?おそらく、見えない空白の行、スペース、またはUnicodeバイトオーダーマークがあります。そのテキストはjsonレスポンスの前に送信されるため、応答はもはや有効ではありません。デバッグを試みましたか?エラーメッセージについては、WebブラウザのJavaScriptコンソールを参照してください。 –

+0

問題はインクルードではなくプログラマです。 – RobertPitt

+0

私が試したテストインクルードファイルは絶対に空です。それはしかなく、デバッグコンソールにエラーはありません。しかし、json_encodeは($ return_arr)だけを送り返すべきではありませんか?オハイオとロバートピットは本当に感謝しています...スーパーヘルプ。 –

答えて

0
$("#jq_forgot_password").live("submit",function(e){ 

     e.preventDefault(); 



     $.post("widgets/recover_pass_process.php", $("#jq_forgot_password").serialize(), 

     function(data){ 



      if(data.email_check == 'invalid'){ 

        $('div.message_error').hide(); 
        $('div.message_success').hide(); 
        $('div.message_error').fadeIn(); 
        $('div.message_error').html("<div'> Sorry you must enter a valid e-mail address. Try again.</div>"); 

      } else { 

       $('div.message_error').hide(); 
       $('form#jq_forgot_password').hide(); 
       $('div.message_success').fadeIn(); 
       $('div.message_success').html("<div'>You're Password has been sent to" + data.email + ". Thank you </div>"); 

       } 

     }, "json"); 

    }); 

これを試してみてください。..

関連する問題