【问题标题】:ajax calling to a php fileajax 调用 php 文件
【发布时间】:2012-04-17 23:51:28
【问题描述】:

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

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

【问题讨论】:

  • 是什么让你说 PHP 脚本没有执行?你确定这不是阻止它运行的 PHP 脚本中的错误吗?
  • 我已经成功单独运行了 php 文件,并且它正确地更新了一个 mySQL 服务器,当我这样做时,mySQL 服务器没有任何变化

标签: php javascript ajax jquery


【解决方案1】:

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/

【讨论】:

  • 那不行,在.ajax之前有什么需要加载的吗?
  • 还有其他脚本错误吗?在您的页面中?使用 firebug 控制台查看错误是什么
  • @AaronBoswell:我遇到了一个脚本错误(一个额外的右括号)。修复了。立即尝试
  • @AaronBoswell :确保正确加载了 jQuery
  • 谢谢,有没有办法将 id=1 作为 .ajax 的另一个参数传递?如果是这样的话,无论如何要让'1'成为一个$id,一个我之前存储在页面中的php变量?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      在你的“changeR”函数中试试这个:

      $.ajax({
      type: "GET",
      url: "win.php",
      data: "id=1",
      success: function(msg){
        window.location.reload();
      }
      });
      

      【讨论】:

      • success 将在 1.8 中弃用。相反,您应该使用done
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 2016-07-05
      • 1970-01-01
      相关资源
      最近更新 更多