0

Jqueryがフォーム値をクリアしないようにする方法はありますか?

次のJqueryスクリプトを作成しました。このスクリプトは、基本的にフォームのPOSTデータをphp関数に送信し、PHP出力が成功した場合は新しいページにリダイレクトし、失敗した場合はエラーを表示します。

   $('#update').click(function(e) {
   e.preventDefault(); 
   $.ajax({
   type: "POST",
   url: 'function.php',
   data: $(this).serialize(),
   success: function(data)
   {
   if (data === 'Success') {
   window.location = 'acc.php';
   }
   else {
   alert('Please try again.');
  }

}

});

});

そして、フォームの値は、次のようにphp変数をエコーアウトすることによって入力されます。

    <input type="text" name="name" id="name" value="<?php echo $name ?>">

ページの読み込みではすべて問題ありませんが、フロントエンドフォームを介してフィールドの値を更新し、送信を押すと、Jqueryはフィールドのすべての値を削除し、空白の値をphp(DBに入力されます)に送り返し、にリダイレクトします。成功メッセージが返される新しいページ。

Jqueryを削除し、フォームをphpに直接送信しようとしましたが、正常に機能したため、間違いなくJqueryの問題です。

編集:PHP変数は別の関数から取得され、その特定のページが最初にロードされたときに、最初はフィールドに正しく表示されます。

問題が何であるかについてのアイデアはありますか?

4

2 に答える 2

1

変更してみてください:

data: $(this).serialize(),

data: $("#your_form_id").serialize(),

また

$('form').submit(function() {      
  $.ajax({
   type: "POST",
   url: 'function.php',
   data: $(this).serialize(),
   ....
});
于 2013-02-25T11:06:23.133 に答える
1

あなたは(おそらく-間違いなく知るためにページのHTMLを見る必要があるでしょう).serialize()間違った要素でを呼び出しています。

clickIDが。の要素にバインドされたイベントハンドラーがありupdateます。これは、ユーザーがAJAXリクエストを送信するためにクリックするボタンまたはリンクのいずれかだと思います。そのイベントハンドラー関数のコンテキスト内には、thisクリックした要素が含まれるため、呼び出し$(this).serialize()はフォームではなくボタンまたはリンクをシリアル化しようとします。

代わりに必要なのは次のいずれかです。

$('#id-of-your-form').serialize()

または、ページに要素が1つしかない場合は<form>、次を使用できます。

$('form').serialize();

ちなみに、これはサーバー側の検証で処理する必要があるようなもののようです(したがって、空白の値を拒否します)。

于 2013-02-25T11:06:50.493 に答える