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

Try.Sorry 如果有一些问题,因为它是用记事本写的。

索引.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>

更新状态.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

我已使用此代码更改状态并在页面上显示更改后的值。这是一个 Javascript 函数,它使用对 PHP 的 Ajax 请求来更改数据库中的状态值。

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

如果您在重新加载页面时遇到问题,那么您可以使用

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

查询

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

更新状态.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

使用 load 代替 reload 在你的成功

...
 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 回答
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 回答