1

(editsessionadmin.php)ユーザーが関連するテキスト入力に評価の名前、日付、時刻を表示するアプリケーションがあります。これで、ユーザーが送信すると確認が表示され、ユーザーが確認すると、ajaxを使用してupdatedatetime.php、データベース内の評価の日時を更新する場所に移動し、成功またはエラーメッセージを上部に表示します。editsessionadmin.phpページ。

しかし、私には小さな問題があります。

問題:divタグを使用すると、更新後のエラーまたは成功メッセージをスクリプトから取得し、このjqueryコードを使用しupdatedatetime.phpてスクリプトに表示できます。ただし、問題は、ユーザーがフォームを送信するとメッセージが表示され、フォームの送信後にメッセージが消えることです。メッセージをページの上部に表示し、消えないようにしたい。なぜ消えるのですか?editsessionadmin.php$("#targetdiv").html(data)editsessionadmin.php

以下はeditsessionadmin.phpのコードです

        <script>

    function submitform() {    

    $.ajax({
        type: "POST",
        url: "/updatedatetime.php",
        data: $('#updateForm').serialize(),
        success: function(html){
            $("#targetdiv").html(html);
        }
     });        
}

         function showConfirm(){

          var examInput = document.getElementById('newAssessment').value;
          var dateInput = document.getElementById('newDate').value;
          var timeInput = document.getElementById('newTime').value;

          if (editvalidation()) {

         var confirmMsg=confirm("Are you sure you want to update the following:" + "\n" + "Exam: " + examInput +  "\n" + "Date: " + dateInput + "\n" + "Time: " + timeInput);

         if (confirmMsg==true)
         {
         submitform();   
     }
  }
} 

$('body').on('click', '#updateSubmit', showConfirm); 

            </script>   

        <h1>EDIT AN ASSESSMENT'S DATE/START TIME</h1>   

        <p>You can edit assessment's Date and Start time on this page. Only active assessments can be editted.</p>

        <div id="targetdiv"></div>

        <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" onsubmit="return validation();">
        <table>
        <tr>
        <th>Course: INFO101</th>
        <th>Module: CHI2513</th>
        </tr>
        </table>
        <p><input id="moduleSubmit" type="submit" value="Submit Course and Module" name="moduleSubmit" /></p>

        </form>


        ....


        <?php
        $editsession = "<form id='updateForm'>

        <p><strong>New Assessment's Date/Start Time:</strong></p>
        <table>
        <tr>
        <th>Assessment:</th>
        <td><input type='text' id='newAssessment' name='Assessmentnew' readonly='readonly' value='' /> </td>
        </tr>
        <tr>
        <th>Date:</th> 
        <td><input type='text' id='newDate' name='Datenew' readonly='readonly' value='' /> </td>
        </tr>
        <tr>
        <th>Start Time:</th> 
        <td><input type='text' id='newTime' name='Timenew' readonly='readonly' value=''/><span class='timepicker_button_trigger'><img src='Images/clock.gif' alt='Choose Time' /></span> </td>
        </tr>
        </table>
        <div id='datetimeAlert'></div>

<button id='updateSubmit'>Update Date/Start Time</button>


        </form>
        ";

        echo $editsession;


        }

        ?>

以下はupdatedatetime.phpのコードです。

<?php

 // connect to the database
 include('connect.php');

  /* check connection */
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    die();
  }

echo 'sumbit successful';

$sessionname = (isset($_POST['Assessmentnew'])) ? $_POST['Assessmentnew'] : ''; 
$sessiondate = (isset($_POST['Datenew'])) ? $_POST['Datenew'] : ''; 
$sessiontime = (isset($_POST['Timenew'])) ? $_POST['Timenew'] : ''; 

$formatdate = date("Y-m-d",strtotime($sessiondate));
$formattime = date("H:i:s",strtotime($sessiontime));

$updatesql = "UPDATE Session SET SessionDate = ?, SessionTime = ? WHERE SessionName = ?";                                           
$update = $mysqli->prepare($updatesql);
$update->bind_param("sss", $formatdate, $formattime, $sessionname);
$update->execute();

echo 'update successful';

$query = "SELECT SessionName, SessionDate, SessionTime FROM Session WHERE SessionName = ?";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("s", $sessionname);
// execute query
$stmt->execute(); 
// get result and assign variables (prefix with db)
$stmt->bind_result($dbSessionName, $dbSessionDate, $dbSessionTime);
//get number of rows
$stmt->store_result();
$numrows = $stmt->num_rows();

echo 'select successful';

if ($numrows == 1){

echo "<span style='color: green'>Your Assessment's new Date and Time have been updated</span>";

}else{

echo "<span style='color: red'>An error has occured, your Assessment's new Date and Time have not been updated</span>";

}

        ?>
4

2 に答える 2

1

わかりました。コードを削除し、フォームの送信を実行するには、ajax呼び出しに必要なのはこれだけです。

function submitupdate() {    

    $.ajax({
        type: "POST",
        url: "/updatedatetime.php",
        data: $('#updateForm').serialize(),
        success: function(html){
            $("#targetdiv").html(html);
        }
     });        
}

これは、

/updatedatetime.php

正しく計算し、更新の成功または失敗のいずれかをエコーし​​ます。

これは、フォーム自体に必要な最小限の情報を示すためのFIDDLEです。フォーム自体にメソッドやアクションを配置する必要はなく、フォームタグだけを配置する必要があります。

送信するボタンに関しては...どこにでも配置でき、何でも作成できます。必ずIDを指定し、クリックハンドラーを添付してフォームを送信してください。

于 2012-11-14T22:47:03.407 に答える
0

ポストコールでフォームを再度送信する行を削除する必要があります。この行はexacltyupdateFormO.submit();です。postメソッドを使用してajax呼び出しを行い、success関数でフォームを再送信します。

于 2012-11-14T23:11:02.397 に答える