Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX-PHP&;XML-POST请求直接指向PHP文件,而不是停留在原始页面_Php_Javascript_Xml_Ajax - Fatal编程技术网

AJAX-PHP&;XML-POST请求直接指向PHP文件,而不是停留在原始页面

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

我最近一直在尝试以我拥有的形式使用AJAX,以防止页面重新加载。我通过Newboston的视频学习了AJAX,并尝试将其与我的状态相匹配

HTML:
名称:
电邮:
主题:

发送
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"?>