AJAX-PHP&;XML-POST请求直接指向PHP文件,而不是停留在原始页面
我最近一直在尝试以我拥有的形式使用AJAX,以防止页面重新加载。我通过Newboston的视频学习了AJAX,并尝试将其与我的状态相匹配 HTML:AJAX-PHP&;XML-POST请求直接指向PHP文件,而不是停留在原始页面,php,javascript,xml,ajax,Php,Javascript,Xml,Ajax,我最近一直在尝试以我拥有的形式使用AJAX,以防止页面重新加载。我通过Newboston的视频学习了AJAX,并尝试将其与我的状态相匹配 HTML: 名称: 电邮: 主题: 发送 JavaScript 函数过程(){ var name=encodeURIComponent(document.getElementById(“f_name”).value); var email=encodeURIComponent(document.getElementById(“f_email”).value
名称:
电邮:
主题:
发送
JavaScript
函数过程(){
var name=encodeURIComponent(document.getElementById(“f_name”).value);
var email=encodeURIComponent(document.getElementById(“f_email”).value);
var sbj=encodeURIComponent(document.getElementById(“f_subc”).value);
if(xmlHttp.readyState==0 | | xmlHttp.readyState==4){
open(“POST”,“send.php”,true);
xmlHttp.onreadystatechange=handleServerResponse;
xmlHttp.send(“name=“+name+”&email=“+email+”&subc=“+sbj”);
}否则{
setTimeout('process()',1000);
}
}
函数handleServerResponse(){
如果(xmlHttp.readyState==4){//AJAX准备好了!
如果(xmlHttp.status==200){//200=通信正常!
var xmlResponse=xmlHttp.responseXML;
var xmlDocumentElement=xmlResponse.documentElement;
var message=xmlDocumentElement.firstChild.data;
document.getElementById(“status”).innerHTML=''+message+'';
}否则{
警惕(“出了什么事!”);
}
}
PHP:
单击按钮后,它会显示PHP页面,并显示以下内容:
此XML文件似乎没有任何关联的样式信息
文档树如下图所示
下面是XML代码:
<response>Sent!</response>
已发送!
那么现在该怎么办呢?该消息是一个警告。XML文档是一个数据结构,但内部不包含任何表示/样式信息。通常,XML文档用于应用程序间通信或作为纯数据结构,然后与其他表示/样式信息一起使用,以显示给用户 您正在使用以下行以
xml
格式输出数据
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
XML样式表参考:但按原样使用原始代码对我来说很有用(也就是说,包括前两行)。我尝试过使用您的代码,它似乎工作得非常好。我在原始页面本身中得到了AJAX响应。
<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
$name = $_POST['name'];
$email = $_POST['email'];
$sbj = $_POST['subj'];
$src = 'BETA';
$to = "someone@somewhere.com";
$subject = "CONTACT | From: " . $name . " , " . $email . " | '" . $sbj . "' | " . $src . "";
$body = "
<html><body>
<h4>From: ".$name." , ".$email."</h4>
<h4>Subject: ".$sbj."</h4>
<h5>Source: BETA</h5>
</body></html>";
$headers = "From: someone@somewhere.com\r\n";
$headers .= "Reply-To: \r\n";
$headers .= "CC: \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$response = 'Error!';
if (mail($to, $subject, $body, $headers)) {
$response = 'Sent!';
} else {
$response = 'Error 202!';
}
echo '<response>';
echo strip_tags($response);
echo '</response>';
exit(); // I had to use exit() due to my hosting adding up code after every PHP page.
?>
<response>Sent!</response>
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<?xml-stylesheet type="text/css" href="your_stylesheet.css"?>