2011-10-20 15 views
0

別のページから読み込んだかなりのフォーム(changeuserjudge.php)フォームが送信されると、ブラウザウィンドウ(送信ダイアログではなく)に送信ページが開きます。私は送信ボタンが押された(そしてPOST変数を送信する)と、同じダイアログボックスに処理フォーム(changeuserjudgeprocess.php)をどのように読み込むことができるかを調べようとしています。私は同じページで処理をやめようとしています。JQuery UIダイアログ - ダイアログ内の別のページからフォームをロードし、同じダイアログ内で処理ページを開く(送信時に)

ダイアログスクリプト:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#click').click(function(){ 
      $("#test").load('changeuserjudge.php?user=tim').dialog({modal:true}); 
      $("#test").dialog("option", "minWidth", 330); 
      $("#test").dialog("option", "position", 'top');    
     }); 
    }); 
</script> 

(テストは、単に空白のページ上のdivです)

フォームを送信:

<body> 
    <div id="judgesMenu"> 
    <form action="changeuserjudgeprocess.php" method="POST"> 

    <?php 

     $selectedJudges = array(); 
     if(isset($_GET['user'])){ 
      echo '<center><b>User: '.ucfirst($_GET['user']).'</b></center><br />'; 
     } 
     echo '<center><input type="checkbox" id="checkall">Select All &nbsp;&nbsp;&nbsp;<input type="checkbox" id="checknone">Select None</center><br />'; 
     $listUserJudges = getUserJudges(userNametoID($_GET['user'])); 
     $arr = array(); 
     $num = count($listUserJudges); 
     if ($num>1){ 
      foreach ($listUserJudges as $x){ 
       array_push($arr, judgeIDtoName($x)); 
      } 
     } 
     else { 
      array_push($arr, $listUserJudges); 
     } 

     echo '<ul>'; 
     $list = getActiveJudges(); 
     foreach ($list as $x){ 
      $found = 0; 
       if (count($arr)>1){ 
        foreach ($arr as $y){ 
         if ($x == $y){ 
          $found = 1; 
          break; 
         } 
        } 
       } 
       else { 
        if (judgeNametoID($x) == $arr[0]){ 
         $found = 1; 
        }      
       } 
       if ($found==1){ 
        echo '<li>'; 
        array_push($selectedJudges, judgeNametoID($x)); 
        echo '<input type="checkbox" checked="checked" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>'; 
        echo '</li>'; 
       } 
       else { 
        echo '<li>'; 
        echo '<input type="checkbox" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>'; 
        echo '</li>'; 
       } 
     } 
      echo '</ul>'; 
      $_SESSION['selectedJudges']=$selectedJudges; 
    ?> 

    <input type="hidden" name="user" value="<?php echo userNametoID($_GET['user']); ?>" /> 

<br/> 
    <p><center><input type="Submit" value="Save Changes" id="sub"/></center></p></div> 
    </form></body> 

答えて

1

あなたはjQueryのフォームプラグインhttp://jquery.malsup.com/form/を見たことがあり?これは、フォームの投稿をハイジャックしてフォームURLに直接ポストするのではなく、ajax経由で送信するのが簡単な方法です(正しく理解していれば、ダイアログボックスが消えます)。ここに最小限のコードがあります。あなたが無効なフォーム提出にどのように反応するかは、次に考慮すべき事項です。私が正しい行にいれば私に教えてください。私は詳しく説明します。

<script type="text/javascript"> 
$(function(){ 
    $("#judgeForm").ajaxForm({ 
     success: function(){ 
      // add some code in here to react to the success of your form post 
     } 
    }); 
}); 
</script> 
<body> 
    <div id="judgesMenu"> 
    <form action="changeuserjudgeprocess.php" method="POST" id="judgeForm"> 

</form> 
</div> 
+0

ありがとう!このプラグインはとても便利です。フォームは正しく送信されているので、これはいいですが、ダイアログボックスを終了してからブラウザウィンドウにchangeuserjudgeprocess.phpをロードすることはできません。私は偽を返して使用しようとした。どんな成功もなしに。何か案は? –

+0

フォーム処理スクリプトにリダイレクトがありませんでしたか?プラグインを設定する場所にコードを投稿できますか? – centralscru

関連する問題