Javascript 在AJAX请求完成成功时运行PHP函数

Javascript 在AJAX请求完成成功时运行PHP函数,javascript,php,ajax,Javascript,Php,Ajax,我知道在JS中,您可以使用AJAX函数的成功作为启动其他事件的触发器 因此,我刚刚使用AJAX加载了一个新页面。通过这个我也传递了一些参数,这就是我传递的: xmlhttp.open("GET","register-form.php?one="+wordChoiceOne+"&two="+wordChoiceTwo+"&three="+wordChoiceThree,true); 现在我有了PHP中的变量$1、$2、$3 在输出到页面之前,我想使用这些(连接、大写、分配等)完成

我知道在JS中,您可以使用AJAX函数的成功作为启动其他事件的触发器

因此,我刚刚使用AJAX加载了一个新页面。通过这个我也传递了一些参数,这就是我传递的:

xmlhttp.open("GET","register-form.php?one="+wordChoiceOne+"&two="+wordChoiceTwo+"&three="+wordChoiceThree,true);
现在我有了PHP中的变量
$1、$2、$3

在输出到页面之前,我想使用这些(连接、大写、分配等)完成一些任务。然而,我不希望它被绑定到点击按钮或任何东西,我希望它被绑定到AJAX加载的成功

现在如何在PHP中启动这些操作

伪代码:

然后
ECHO USERNAME OUT

埃塔。我已经编写了AJAX请求,它工作得很好。现在它被加载了,我想执行这个PHP函数,将该函数的触发器绑定到AJAX加载的成功:

<?php

$_GET['one'], $_GET['two'] and $_GET['three'];

// Capitalise first letter
$one = ucfirst($one); 
$two = ucfirst($two); 
$three = ucfirst($three); 

$username = $one . $two . $three;

?>
我的理解是(也许我错了?如果我错了,请让我知道并解释…)这将把已经存在的wordChoiceTwo等变量分配给$2的PHP变量。是这样吗

现在我有了PHP变量$1、$2和$3

运行PHP

也许这是因为我更习惯于使用JS,但是使用JS你必须做一些事情(点击按钮等)才能实现一个功能。我知道这样做是成功的AJAXC请求,但那不是PHP。所以我的问题是。。。这是我唯一的问题,就是**当你刚刚通过AJAX加载了一些东西时,如何开始运行PHP函数?**我想开始运行一个名为`setUsername`的PHP函数“在这一页上。但我不希望用户必须按下一个按钮才能开始,我希望它与AJAX完成的成功相关,或者类似的事情,因为我知道这可能只是JS

这是我已经准备好的AJAX调用:

function saveUsername(wordChoiceOne, wordChoiceTwo, wordChoiceThree){

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("login-register-wrapper").innerHTML=xmlhttp.responseText;
    }
  }


xmlhttp.open("GET","register-form.php?one="+wordChoiceOne+"&two="+wordChoiceTwo+"&three="+wordChoiceThree,true);
xmlhttp.send();
}

添加json头类型和echo

$_GET['one'], $_GET['two'] and $_GET['three'];

// Capitalise first letter
$one = ucfirst($one); 
$two = ucfirst($two); 
$three = ucfirst($three); 

$username = $one . $two . $three;
header('Content-type: application/json');
echo json_encode(array('username'=>$username)); // <---
编辑,因为似乎有些混乱:

ajax调用到达php脚本并不意味着它已被执行。请求的本质是等待答复。如果您的php echo是它的话,这个回复可以包含数据

编辑2这样你就可以了解它的原理了,下面是我认为你想要的东西的一个过于简单的解释:

文件“ajax.html”:

<div id="name"></div>
<script>
    function myName(first, last) {
        var req = new XMLHttpRequest();
        req.open('GET', 'ajax.php?first='+first+'&last='+last);

        req.onreadystatechange = function() {
            if(req.readyState==4 && req.status==200) {
                data = JSON.parse(req.responseText);
                document.getElementById('name').innerHTML = data.username;
            }
        }
        req.send();
    }
    myName('john', 'doe')
</script>

这就是AJAX的一般使用方式

为什么您希望从客户端调用它,而不是从
register form.php
?嗯,也许我没有解释自己。我不希望从那里调用它,但我希望它在register-form.php加载时发生。有可能仅仅在文件加载时就执行PHP吗?为什么您希望您的应用程序依赖于不可靠的客户端,而您已经将数据传递到服务器?为什么这么说?我想做的就是使用jQuery生成一些变量,然后用PHP处理它们……@我已经用简单的英语更新了帖子,解释了我要找的内容。如果我对某事的理解有误,那就好了。但如果我错了,我会很感激,而不是告诉我走开,放弃,有人能看到我错在哪里,也许能为我应该做什么提供解决方案。我已经为我想要的最终结果更新了大量的信息,并详细解释了我是如何做到这一点的。我想我困惑的部分是如何将PHP函数绑定到AJAX的成功上,因为我的理解是,只有将另一个JS函数绑定到AJAX的成功上。也许这是不对的?我会试一试,但我不确定它应该放在哪个部分(在加载的新页面中?)OP已经用链接和解释进行了更新。不,PHP与此无关。在你看来,ajax调用的成功似乎是因为PHP接收到了变量,但实际上是web服务器的响应,这无非是你的邮差把一个包放进了你的邮箱。你仍然需要对软件包的内容做些什么,只需在谷歌上搜索一个php ajax教程,它会返回成功的数据。你似乎缺少了一些AJAX的基础知识。我上周才学会使用它,所以是的,我可能已经学会了。我认为我已经通过请求传递了数据,但似乎没有。我已经将PHP放在了新的register-form.PHP文件(在中调用)的顶部。但我现在无法让通过URL(我OP中的第一段代码)的数据正常工作,因为它说找不到URL的错误。。。
$_GET['one'], $_GET['two'] and $_GET['three'];

// Capitalise first letter
$one = ucfirst($one); 
$two = ucfirst($two); 
$three = ucfirst($three); 

$username = $one . $two . $three;
header('Content-type: application/json');
echo json_encode(array('username'=>$username)); // <---
xmlhttp.onreadystatechange=function() {
   if (xmlhttp.readyState==4 && xmlhttp.status==200) {
     //xmlhttp.responseText;
   }
 }
<div id="name"></div>
<script>
    function myName(first, last) {
        var req = new XMLHttpRequest();
        req.open('GET', 'ajax.php?first='+first+'&last='+last);

        req.onreadystatechange = function() {
            if(req.readyState==4 && req.status==200) {
                data = JSON.parse(req.responseText);
                document.getElementById('name').innerHTML = data.username;
            }
        }
        req.send();
    }
    myName('john', 'doe')
</script>
$first = $_GET['first'];
$last = $_GET['last'];
header('Content-type: application/json');
echo json_encode(array('username'=>ucwords($first) . ' ' . ucwords($last)));