Php ajax成功后如何重新加载页面内容
对于给定的php和javascript代码,如何在jQueryAjax成功函数之后仅重新加载页面内容,而不是整个页面。在这种情况下,它最初会显示 成功 在ajax调用之后,它将显示为 失败 重新加载整个页面 Php代码:Php ajax成功后如何重新加载页面内容,php,jquery,ajax,Php,Jquery,Ajax,对于给定的php和javascript代码,如何在jQueryAjax成功函数之后仅重新加载页面内容,而不是整个页面。在这种情况下,它最初会显示 成功 在ajax调用之后,它将显示为 失败 重新加载整个页面 Php代码: <?php require 'dbconnect.php'; $sql="select * from tbl_status where id='1'"; $res=mysql_query($sql); $row=mysql_fetch_array($res); if($
<?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"/>
如果您在重新加载页面时遇到问题,则可以使用
window.location.href=window.location.href代码>
考虑到您的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
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>';
}
$status=$\u POST['status'];
//使您查询..更新您的表
如果($status==“0”){
echo“失败1”;
}否则{
回声“成功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
。。。
成功:职能(e)
{
$('your id or class name')。加载(php_file_name+'your_id_or_class_to_refresh');
var响应=e;
警报(响应);
location.reload();
},
....
//location.reload();// 试试看。如果记事本上写的有问题,我很抱歉
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>
问题是: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');
}
},
我已使用此代码更改状态,并在页面上显示更改的值。这是一个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);
}
功能更改状态(divID、id、action、frontOrAdmin)
{
xmlhttp=getobject();
var query=“id=”+id+”&action=“+action+”&frontOrAdmin=“+frontOrAdmin;
$oldStatus=document.getElementById(divID).innerHTML;
document.getElementById(divID).innerHTML='';
xmlhttp.onreadystatechange=函数()
{
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];
}
否则{
警报(响应器[0]);
getElementById(divID).innerHTML=$oldStatus;
}
}
}
open(“GET”、“pass.php?type=changestatus&”+query,true);
xmlhttp.send(空);
}
您想重新登录页面吗??或者你不想。。这让人困惑…我不想重新加载整个页面,只想重新加载页面内容好的。。那么为什么要使用location.reload()。。你能告诉我们你想把内容放在哪里吗?当我点击“提交”按钮时,数据库表中的状态列将变为“0”,结果显示为一个警报,然后如何在不重新加载整个页面的情况下将“成功”变为“失败”检查我的更新答案,问题是,它希望在状态为“1”时显示“成功”,在状态为“0”时显示“失败”。因此,当我们使用ajax更新status='0'时,在ajax成功函数之后,“success”将变为“failed”,而不重新加载整个页面,只重新加载页面内容。。
header('HTTP/1.0 403 Forbidden');
die('Failed');
success: function(data) {
if (data == 'Failed') {
alert('ERROR');
location.reload();
} else {
alert('Success');
}
},
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);
}