2017-04-05 5 views
0

私は1つのページに2つのdivがあります.1つはフォーム用で、もう1つはフォーム出力用です。PHP側のブール変数に基づいて、AJAX経由で異なるdivブロックを更新してロードするにはどうすればよいですか?

が有効でない場合は、のフォームが再表示され、フォームにエラーが強調表示されます。フォームが有効な場合は、フォームdivを非表示にし、処理された出力を表示します。必要であれば、それはフォームのdivに有効であったとき、私はまた、フォームをリロードすることができ、すなわち$isFormValid = true;

私はフォームが私のPHP内部で有効であるかどうかを判断することができ、。 (私はそれが有効でないときに再読み込みする必要があるので)。

質問

どのように?ここで明確にする

は、私が持っているしたいイベントの流れです:

あなたのPHPファイルで

enter image description here

+0

有効なフォームの提出については、サーバーの出力形式は何ですか? HTML? JSON? –

+0

現時点で私はHTMLを使用していますが、柔軟性があります。フォームデータは、基本的に '$ _POST'にあるもので、私はそれを取って何でもします。現在、これをHTMLにラップすることは、おそらくレガシーの理由によるものです。.... – Dennis

+0

を追加すると、フォーム自体がHTMLを生成する 'Zend \ Form'ライブラリを介して生成されるため、その部分は滞留しなければなりませんHTML .... – Dennis

答えて

1

:あなたのAJAX応答処理関数の使用では

$validFormOutputInJSONFormat = '...'; 
$invalidFormValidationMessagesInJSONFormat = '...'; 

header('Content-type: application/json'); // Remove this line if you've already set this http header in your code. 

if ($isFormValid) { 
    echo '{"valid":true, "data":'.$validFormOutputInJSONFormat.'}'; 
} else { 
    echo '{"valid":false, "data":'.$invalidFormValidationMessagesInJSONFormat.'}'; 
} 

このような何か:

if (responseData.valid) { 
    // JS code to hide the form 
    // JS code to show output. responseData.data has the info you will need here 
} else { 
    // JS code to show validation messages in the form. responseData.data has the info you will need here 
} 
1

結果をjsonとして出力することができればRのサーバーサイドコード、

{success:true, formValid:true , message: 'success result'} 

または

{success:true, formValid: false, message: 'some error message'} 

のようなもの、あなたはあなたのフォームを投稿するAjaxのPOSTメソッドを使用することができ、かつ成功で、あなたはformValid値をチェックし、/ショーdivタグやエラーを非表示にすることができますフォームに応じたメッセージ有効な値

$('#myform').on('submit' , function(e){ 
    e.preventDefault(); 
    $.ajax({ 
     data : $(this).serializeArray(), 
     url : $(this).attr('action'), 
     type : 'POST', 
     success : function(result){ 
     if(result.success) { 
      if(result.formValid === true) { 
      // form validation passed. 
      } 
      else { 
      // form is invalid. 
      } 
     }else{ 
      // ajax didn't worked out, no response 
     } 
     } 

    }) 
    }) 
関連する問題