【发布时间】:2018-02-25 17:47:37
【问题描述】:
HTML代码
<div class="container">
<?php echo $_POST['name']; ?>
<form method="POST" id="reg-form" action="register">
<label>Full Name:</label>
<input class="register-form-input" type="text" name="name" id="name"><br>
<label>Username:</label>
<input class="register-form-input" type="text" name="username" id="username"><br>
<label>Email:</label>
<input class="register-form-input" type="email" name="email" id="email"><br>
<label>ID Number:</label>
<input class="register-form-input" type="text" name="idnumber" id="idnumber"><br>
<label>Password:</label>
<input class="register-form-input" type="password" name="password" id="password"><br>
<label for="name">Repeat Password:</label>
<input class="register-form-input" type="password" name="password1" id="password1"><br><br>
<input type="submit" name="submit" id="register-submit" onclick="ajax_post();">
</form>
<?php echo $_POST['name']; ?>
</div>
Javascript 文件
function ajax_post(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "register/index";
var name = document.getElementById("name").value;
var username = document.getElementById("username").value;
var vars = "name="+name+"&username="+username;
hr.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
console.log(return_data);
}
}
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars); // Actually execute the request
}
document.querySelector('#reg-form').onsubmit=function(){
return false;
}
注册控制器
<?php
class Register extends Controller{
public function __construct(){
parent::__construct();
echo $_POST['name'];
}
public function index(){
echo $_POST['name'];
$this->view->render('register/index',false);
$this->model->run();
echo $_POST['name'];
}
public function run(){
}
}
问题是,当我在控制台中返回数据(ajax 响应)时,它会显示整个内容,并且我写过的任何地方 echo $_POST['name'] 仅出现在控制台响应中,在页面上它是未定义的。如果你需要解释,我会说得更详细。只是 $_POST['name'] 在页面上未定义,但在控制台中未定义。
【问题讨论】:
-
简单,这是因为您的
<?php echo $_POST['name']; ?>向您抛出了该错误。 -
在您的第一个代码中,
$_POST['name']永远不会有值,因为它来自 ajax 请求;当然它不会在调用脚本/页面中定义;收到 ajax 请求后,您必须使用 javascript 更新页面 -
呃,你能说得更具体点吗?
-
我知道这是因为 $_POST['name'] 但我不明白为什么 Ajax 不向注册控制器、url="register/index" 和索引方法发送数据写成 $_POST['name'] 但它也是未定义的,就像没有得到任何数据,但实际上它得到了
-
pixs.ru/showimage/testpng_8254408_29486553.png 这是一个img,我在主要部分(asdasd)下划线有$_POST['name']
标签: javascript php ajax xmlhttprequest