Javascript 在AJAX请求完成成功时运行PHP函数
我知道在JS中,您可以使用AJAX函数的成功作为启动其他事件的触发器 因此,我刚刚使用AJAX加载了一个新页面。通过这个我也传递了一些参数,这就是我传递的: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 在输出到页面之前,我想使用这些(连接、大写、分配等)完成
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)));