我试图在调用javascript函数时运行一个php文件然后重新加载页面,它重新加载页面但是php文件没有被执行。
function changeR()
{
$.ajax({ url: 'win.php?id=1' });
window.location.reload()
}
答案 0 :(得分:4)
ajax调用完成后重新加载。您可以使用成功事件。
function changeR()
{
$.ajax({ url: 'win.php?id=1' ,
success: function(data) {
window.location.reload()
}
});
}
请记住,如果ajax调用成功,将执行成功事件,如果您想执行某些代码,无论成功或错误,您可以考虑[complete][1]
或done
< / p>
或者,您可以尝试使用window.location.href=window.location.href
代替window.location.reload()
通常人们使用ajax来执行部分页面更新而不重新加载页面。您确定要在ajax呼叫后重新加载整个页面吗?
编辑:根据评论
如果你想通过这个ajax调用传递你的php变量值,你可以这样做
将值设置为某个html元素(例如:id为txtID的隐藏元素)
//Reading the value of an html element with id `txtId`
var val=$("#txtID").val();
$.ajax({ url: 'win.php' ,
data: { id: val },
success: function(data) {
window.location.reload()
}
});
在这里,您将在名为id
的参数中发送element的值。你可以使用萤火虫或小提琴手看看它的价值。
答案 1 :(得分:1)
AJAX调用是异步的,这意味着您在AJAX请求完成之前执行window.location.reload()
。相反,等到AJAX请求完成后,然后重新加载。
function changeR()
{
$.ajax({
url: 'win.php?id=1'
}).done(function() {
window.location.reload()
});
}
答案 2 :(得分:0)
首先确保win.php
脚本中没有可能阻止其成功执行的错误。
其次,仅在ajax调用完成后执行重新加载。更简单的方法是将asyc
设置为false
。这样调用是同步完成的,这意味着它将在继续之前等待其执行完成。
function changeR()
{
$.ajax({ url: 'win.php?id=1', async: false });
window.location.reload()
}
答案 3 :(得分:0)
尝试进入'changeR'功能:
$.ajax({
type: "GET",
url: "win.php",
data: "id=1",
success: function(msg){
window.location.reload();
}
});