0

以下に、ある入力セット (ユーザーが変更を行った入力セット) から別の入力セット (入力セットコースの現在の詳細が記載されています)。また、変更が必要な場合は、新しい変更に対応するためにコースのドロップダウン メニューが変更されます。

 function submitform() {    

    $.ajax({
        type: "POST",
        url: "updatecourse.php",
        data: $('#updateCourseForm').serialize(),
        success: function(html){
            $("#targetdiv").html(html);
            //Get and store the new course number and name.
                var newCourseNo = jQuery("#newCourseNo").val();
                var newCourseName = jQuery("#newCourseName").val();
                var newDuration = jQuery("#newDuration").val();

                //Set your current course number and name to your number and name.
                jQuery("#currentCourseNo").val(newCourseNo);
                jQuery("#currentCourseName").val(newCourseName);
                jQuery("#currentDuration").val(newDuration);

                //Find the currently selected course and update it.
                var selectedOption = jQuery("#coursesDrop option:selected");
                var label = selectedOption.text().split(" - ");
                selectedOption.text(newCourseNo + " - " + newCourseName);

                $('#targetdiv').show();
        }
     });        
}

これ$("#targetdiv")は、ajax を介してアクセスされる php ページから取得された成功またはエラー メッセージを表示する ID です。

updatecourse.php:

...//mysqli code

echo "<span style='color: green'>Course details have been updated:<br/>" . $newcourseno . " - " . $newcoursename . "</span>";

}else{

echo "<span style='color: red'>An error has occured, Course Details have not been updated</span>";

}

しかし、私が抱えている問題は、phpコードからのエラーメッセージがjqueryで取得された場合、コースの詳細をjqueryで編集して、現在のコーステキスト入力に対応して新しい詳細を挿入したくないことです。成功メッセージが表示された場合にのみ発生させたいです。

I want no change to occur というエラー メッセージが表示された場合、現在のコースの詳細の入力と新しいコースの詳細の入力は、送信前と同じままです。

しかし、これはどのように達成できますか?

4

3 に答える 3

1

DOM EX の更新に基づいて、JSON 応答の任意のフラグを使用します。

  $.ajax({
        type: "POST",
        url: "updatecourse.php",
      dataType: 'json',
        data: $('#updateCourseForm').serialize(),
        success: function(json){
            $("#targetdiv").html(json.htmlContent);
            //Get and store the new course number and name.
        if(json.status=="success"){
 var newCourseNo = jQuery("#newCourseNo").val();
                var newCourseName = jQuery("#newCourseName").val();
                var newDuration = jQuery("#newDuration").val();

                //Set your current course number and name to your number and name.
                jQuery("#currentCourseNo").val(newCourseNo);
                jQuery("#currentCourseName").val(newCourseName);
                jQuery("#currentDuration").val(newDuration);

                //Find the currently selected course and update it.
                var selectedOption = jQuery("#coursesDrop option:selected");
                var label = selectedOption.text().split(" - ");
                selectedOption.text(newCourseNo + " - " + newCourseName);

                $('#targetdiv').show();
}else{
//show whatever mesage u want
}

        }
     }); 
于 2012-12-31T09:35:34.037 に答える
1

JSONとして応答を取得します(結果を取得した後に応答を操作できるように...)

これを試して、

Jクエリ

$.ajax({
    type: "POST",
    url: "updatecourse.php",
    data: $('#updateCourseForm').serialize(),
    dataType:'json';  //get response as json
    success: function(result){
        if(result.errorflag){

           //do your stuff on getting error message
          var newHtml="<span style='color: red'>"+result.msg+"</span>" 
          $("#targetdiv").html(newHtml);  //i am displaying the error msg here

        }else{
           //you got success message

           var newHtml="<span style='color: green'>"+result.msg+"</span>" 
           $("#targetdiv").html(newHtml);
           //Get and store the new course number and name.
            var newCourseNo = jQuery("#newCourseNo").val();
            var newCourseName = jQuery("#newCourseName").val();
            var newDuration = jQuery("#newDuration").val();

            //Set your current course number and name to your number and name.
            jQuery("#currentCourseNo").val(newCourseNo);
            jQuery("#currentCourseName").val(newCourseName);
            jQuery("#currentDuration").val(newDuration);

            //Find the currently selected course and update it.
            var selectedOption = jQuery("#coursesDrop option:selected");
            var label = selectedOption.text().split(" - ");
            selectedOption.text(newCourseNo + " - " + newCourseName);

            $('#targetdiv').show();
         }
      }
 }); 

PHP

json_encode()応答をjsonとして送信するには....応答を配列として送信し、エラーフラグを付けて、それが成功かエラーかを確認し、メッセージを出力します...

...//mysqli code

    echo json_encode(array('errorflag'=>false,'msg'=>"Course details have been updated:<br/>" . $newcourseno . " - " . $newcoursename));

  }else{

  echo json_encode(array('errorflag'=>true,'msg'=>"An error has occured, Course Details have not been updated"));

}
于 2012-12-31T09:36:30.787 に答える
0

成功ブロックでこれを行う

success: function(html){
    var indexValue = html.indexOf("An error has occured"); 
    if (parseint(indexValue ) < 0 ) {
        return false;
    }

    $("#targetdiv").html(html);
于 2012-12-31T09:36:08.513 に答える