フォームを送信しようとしています。フォームは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);
?>
その後、それはすべて金切り声になりますインクルードファイルに何も入っていなくても停止します。私が別のファイルを取り込もうとしているという事実だけで、それが殺されます。
私は間違って何をしていますか?前もって感謝します!!
を使用すると、他のファイルは、その中には何も持っていませんか?おそらく、見えない空白の行、スペース、またはUnicodeバイトオーダーマークがあります。そのテキストはjsonレスポンスの前に送信されるため、応答はもはや有効ではありません。デバッグを試みましたか?エラーメッセージについては、WebブラウザのJavaScriptコンソールを参照してください。 –
問題はインクルードではなくプログラマです。 – RobertPitt
私が試したテストインクルードファイルは絶対に空です。それはしかなく、デバッグコンソールにエラーはありません。しかし、json_encodeは($ return_arr)だけを送り返すべきではありませんか?オハイオとロバートピットは本当に感謝しています...スーパーヘルプ。 –