1

指定されたphpおよびjavascriptコードのjquery ajax成功関数の後に、ページ全体ではなく、ページコンテンツのみをリロードする方法。その中で最初に表示される

成功

ajax呼び出しの後、次のように表示されます

失敗した

ページ全体をリロードすると..

Php コード :

 <?php
require 'dbconnect.php';
$sql="select * from tbl_status where id='1'";
$res=mysql_query($sql);
$row=mysql_fetch_array($res);
if($row['status']=='1')
{
 ?>
Success <div class="status" style="visibility:hidden;">0</div>
 <?php
 }
 else
 {
 ?>
 Failed
<div class="status" style="visibility:hidden;">1</div>
 <?php
 }
 ?>
 <input type="submit" class="send"/>

Javascript コード :

<script type="text/javascript">
$(function(){
$('.send').click(function(){
var status=$('.status').text();
  $.ajax({
     type: 'POST', 
       url: 'http://localhost/status/updatestatus.php',
           data: 'status='+status,
         success  : function (e)
         {
           var response=e;
           alert(response);

         },
         error: function()
         {
         alert('error');
         }
      });
});
});
</script>
4

6 に答える 6

1

試してみてください。メモ帳で書いたので、何か問題がありましたら申し訳ありません。

index.php

<?php
require 'dbconnect.php';
$sql="select * from tbl_status where id='1'";
$res=mysql_query($sql);
$row=mysql_fetch_array($res);
<div id="response">
if($row['status']=='1')
{
?>
   Success <div class="status" style="visibility:hidden;">0</div>
<?php
}
else
{
?>
Failed
<div class="status" style="visibility:hidden;">1</div>
<?php
}
?>
</div>
<input type="submit" class="send"/>


<script type="text/javascript">
$(document).ready(function(){
  $('.send').click(function(){
  var status=$('.status').text();
  $.ajax({
     type: 'POST', 
       url: 'http://localhost/status/updatestatus.php',
           data: 'status='+status,
         success  : function (data, status)
         {
           $("#response").html(data.status);
         },
         error: function()
         {
           alert('error');
         }
      });
});
});
</script>

updatestatus.php

<?php
require 'dbconnect.php';
$sql="update tbl_status set status=$_POST['status'] where id='1'";    
$res=mysql_query($sql);
$count = mysql_affected_rows();

if($count > 0){
    return json_encode(array('status'=>$count));
}else{
    return json_encode(array('status'=>0));
}

?>

于 2013-03-29T06:26:59.187 に答える
1

このコードを使用してステータスを変更し、変更された値をページに表示しました。これは、データベース内のステータスの値を変更する PHP への Ajax リクエストを使用する Javascript 関数です。

function changeStatus(divID,id,action,frontOrAdmin)
{


        xmlhttp=getobject();
        var query="id="+id+"&action="+action+"&frontOrAdmin="+frontOrAdmin;
        $oldStatus = document.getElementById(divID).innerHTML;
        document.getElementById(divID).innerHTML='<img src="images/loading_icon.gif">';
        xmlhttp.onreadystatechange=function()
        {
                if (xmlhttp.readyState==4)
                {
                        var response = xmlhttp.responseText;
                        var responseArr = response.split(",");

                        if(($.trim(responseArr[1])=="0")||($.trim(responseArr[1])=="1")){
                           document.getElementById(divID).innerHTML=responseArr[0];
                        }
                        else{           
                            alert(responseArr[0]);
                            document.getElementById(divID).innerHTML=$oldStatus;
                        }
                }
        }
        xmlhttp.open("GET","pass.php?type=changestatus&"+query,true);
        xmlhttp.send(null); 
}
于 2013-03-29T06:47:01.770 に答える
0

問題は、jQuery 部分と PHP 部分に互換性がないことです。返品ステータスを実際に変更したわけではなく、テキストだけです。「失敗」を通知するには、PHP 側でいくつかのヘッダーを使用します。例えば:

PHPで:

header('HTTP/1.0 403 Forbidden');
die('Failed');

次に、ajax は「成功」ではなく「エラー」ハンドラーを発生させます。

または、「成功」ハンドラーのみを使用し、返されたテキストを次の場所でテストする必要があります。

JavaScript で:

success: function(data) {
   if (data == 'Failed') {
       alert('ERROR');
       location.reload();
   } else {
        alert('Success');
   } 
},
于 2013-03-29T06:37:43.180 に答える
0

ページのリロードに問題がある場合は、使用できます

window.location.href=window.location.href;

お役に立てれば

于 2013-03-29T06:04:46.560 に答える
0

あなたのajaxが正常に動作していることを考慮して...そしてあなたが得ている応答はHTMLです

location.reload() を呼び出す必要はありません。応答を DOMtree に追加するだけで済みます。

更新しました

HTML

....
?>  //close php tag
<div id="displayStatus">  //create new div with id displayStatus
<?php
if($row['status']=='1')
{
 ?>
    Success <div class="status" style="visibility:hidden;">0</div>
<?php
 }
 else{
 ?>
    Failed <div class="status" style="visibility:hidden;">1</div>
 <?php
  }
 ?>
 </div> //end the div

Jクエリ

success  : function (e)
     {
       var response=e;
       alert(response);
       $('#displayStatus').html(response); //replace the content in that
     },

updatestatus.php

 $status= $_POST['status'];
//make you query ..update your table 
 if($status == '0'){
     echo 'Failed <div class="status" style="visibility:hidden;">1</div>';
 }else{
    echo 'Success <div class="status" style="visibility:hidden;">0</div>';
 }
于 2013-03-29T06:07:11.040 に答える
0

あなたの成功でリロードの代わりにロードを使用してください

...
 success  : function (e)
     {
       $('your id or class name').load(php_file_name +'your_id_or_class_to_refresh');
       var response=e;
       alert(response);
       location.reload();
     },
....


// location.reload(); // <-- does not work so
于 2013-03-29T06:10:31.567 に答える