koz*_*ozi 1 javascript php ajax
我已经创建了一个发送到我的PHP服务器的AJAX请求:
var xml = new XMLHttpRequest();
xml.open("POST", "question.php", true);
xml.setRequestHeader('question','test');
xml.send();
Run Code Online (Sandbox Code Playgroud)
在PHP中,我正在尝试接收AJAX数据,但不幸的是,它无法正常工作.
$qst = $_POST['question'];
return $qst;
Run Code Online (Sandbox Code Playgroud)
我是否在使用AJAX请求时出错?如何正确设置POST变量的名称?我猜这就是问题所在.
您有三个问题阻止您的代码工作.
POST数据在HTTP请求的正文中发送,而不是标头.
使用FormData对象最容易实现.(您还可以手动设置Content-Type请求标头和格式化数据,但FormData使您不必考虑所有这些).
var data = new FormData();
data.append("question", "test");
var xml = new XMLHttpRequest();
xml.open("POST", "question.php", true);
xml.send(data);
Run Code Online (Sandbox Code Playgroud)
好.您可能正在浏览器中的Developer Tools的Network选项卡中查看响应,但我猜您不是.
xml.addEventListener("load", examine_response);
function examine_response() {
alert(this.responseText);
}
Run Code Online (Sandbox Code Playgroud)
return 用于将函数中的数据传递回任何调用它的数据.
它不会将任何内容输出回浏览器.你需要echo或类似的.
$qst = $_POST['question'];
print $qst;
Run Code Online (Sandbox Code Playgroud)
您的代码容易受到XSS攻击.您不得在HTML文档中回显用户输入而不转义它.
由于您尝试发送纯文本,请告诉浏览器它是纯文本文档(PHP默认为它是HTML):
header("Content-Type: text/plain");
$qst = $_POST['question'];
print $qst;
Run Code Online (Sandbox Code Playgroud)