0

我试图在调用 javascript 函数然后重新加载页面时运行 php 文件,它会重新加载页面但 php 文件没有被执行。

function changeR() 
{
    $.ajax({ url: 'win.php?id=1' });
    window.location.reload()
}
4

4 回答 4

4

ajax 调用完成后重新加载。您可以使用成功事件。

function changeR() 
{
  $.ajax({ url: 'win.php?id=1' ,
            success: function(data) {
                       window.location.reload()
                    }
        }); 
}

请记住,如果ajax调用成功,将执行成功事件,如果您想执行一些代码,无论是成功还是错误,您都可以考虑,[complete][1]或者done

或者,您可以尝试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。您可以使用 firebug 或 fiddler 查看正在发生的值。

更多选项在这里:http ://api.jquery.com/jQuery.ajax/

于 2012-04-17T23:53:45.363 回答
1

AJAX 调用是异步的,这意味着您window.location.reload()在 AJAX 请求完成之前执行。相反,等到 AJAX 请求完成,然后重新加载。

function changeR() 
{
  $.ajax({
    url: 'win.php?id=1'
  }).done(function() {
    window.location.reload()
  });
}
于 2012-04-17T23:54:12.160 回答
0

首先确保您的win.php脚本中没有可能阻止它成功执行的错误。

其次,只有在ajax调用完成后才执行reload。完成此操作的更简单方法是将asyc设置设置为false。这样调用是同步完成的,这意味着它将等待其执行完成后再继续。

function changeR() 
{
    $.ajax({ url: 'win.php?id=1', async: false });
    window.location.reload()
}
于 2012-04-17T23:59:04.980 回答
0

在你的'changeR'函数中试试这个:

$.ajax({
type: "GET",
url: "win.php",
data: "id=1",
success: function(msg){
  window.location.reload();
}
});
于 2012-04-18T00:02:12.500 回答