javascript - 使php脚本等到ajax请求完成
问题描述
我是 php 新手,所以请和我一起裸露。我有一个 ajax 函数,它创建一个发布请求以将数据发送到服务器端 php 并回显它,我的代码应该可以正常工作。问题是 php echo 在create()
函数运行之前正在处理,因此仅显示未找到变量的错误。php中有没有办法让echo proccess等到ajax函数运行。任何帮助表示赞赏。预先感谢。
function create() {
$.ajax({
url: "test.php",
type: "post",
dataType: 'json',
data: {
registration: "success",
name: "xyz",
email: "abc@gmail.com"
},
success: function(result) {
console.log(result.abc);
}
});
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<button onclick="create()">click me</button>
<?php
$registration = $_POST['registration'];
$name= $_POST['name'];
$email= $_POST['email'];
if ($registration == "success"){
echo json_encode(array("abc"=>'successfuly registered'));
}
?>
function create() {
$.ajax({
url: "test.php", //the page containing php script
type: "post", //request type,
dataType: 'json',
data: {
registration: "success",
name: "xyz",
email: "abc@gmail.com"
},
success: function(result) {
console.log(result.abc);
}
});
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<button onclick="create()"> Click me</button>
<? php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$registration = $_POST['registration'];
$name= $_POST['name'];
$email= $_POST['email'];
if ($registration == "success"){
// some action goes here under php
echo json_encode(array("abc"=>'successfuly registered'));
}
}
?>
解决方案
假设您的script
和button
标签与 php 脚本存在于同一个文件中,就像您的问题中显示的那样:您的代码乱序运行,因为正如您自己指出的那样,您在函数运行之前运行PHP代码。create
仅仅因为您按顺序编写代码并不意味着它会按顺序运行。
这是发生的事情,按顺序:
script
并且button
标签被渲染- 您的 php 代码运行
- 步骤 1 和 2 的结果发送到浏览器
- 然后有人点击按钮
您需要做的是将 php 脚本移动到仅在按钮 blick 时请求的单独路由。例如test.php
,假设您在 q 中显示的代码尚未存在于该文件中——在这种情况下,您需要将 php 代码放在不同的文件中。
推荐阅读
- r - 如何正确存储用于网络抓取的 html 文件列表?
- python-3.x - 如何使用 Python 和 PyQt5 从行编辑中获取值到另一个窗口的行编辑?
- apache-spark - 使用结构化流从 KAfka 接收的 JSON 消息需要转换为数据集
- python - 如何将 model.predict 包含到我的输入管道中?
- php - Laravel 实现每组最大 n
- javascript - 我可以在不重新加载页面的情况下将数据从表单传输到块吗?
- java - 如何将 TreeSet 值映射到 TreeMap?
- mysql - 从多行获取日期的最小和最大时间
- rest - Liferay 7.0 中返回动态数据列表中所有记录的 API 方法是什么?
- sql - 在 INSERT INTO 语句中直接使用外键值