AJAX-PHP;XML-POST请求指向PHP文件,而不是停留在原始页面
AJAX - PHP & XML - POST request is directing to the PHP file instead of staying at the original page
我最近一直在尝试以我拥有的形式使用AJAX,以防止页面重新加载。我通过newoston的视频学习了AJAX,并试图将其与我的形式相匹配
HTML:
<label for="f_name">Name:</label>
<input type="text" name="f_name" id="f_name" />
<label for="f_email">E-Mail:</label>
<input type="text" name="f_email" id="f_email" />
<label for="f_subj">Subject:</label>
<input type="text" name="f_subj" id="f_subj" /><br />
<div id="status"></div>
<button id="b_send" onClick="process()">Send</button>
JavaScript
function process() {
var name = encodeURIComponent(document.getElementById("f_name").value);
var email = encodeURIComponent(document.getElementById("f_email").value);
var sbj = encodeURIComponent(document.getElementById("f_subj").value);
if (xmlHttp.readyState == 0 || xmlHttp.readyState == 4) {
xmlHttp.open("POST", "send.php", true);
xmlHttp.onreadystatechange = handleServerResponse;
xmlHttp.send("name="+name+"&email="+email+"&subj="+sbj);
} else {
setTimeout('process()', 1000);
}
}
function handleServerResponse() {
if (xmlHttp.readyState == 4) { // AJAX is ready!
if (xmlHttp.status == 200) { // 200 = Comms went OK!
var xmlResponse = xmlHttp.responseXML;
var xmlDocumentElement = xmlResponse.documentElement;
var message = xmlDocumentElement.firstChild.data;
document.getElementById("status").innerHTML = '<span style="color:blue">' + message + '</span>';
} else {
alert('Something went wrong!');
}
}
PHP:
<?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.
?>
点击按钮后,它会显示PHP页面,上面写着:
此XML文件似乎没有任何关联的样式信息文档树如下所示。
以及下面的XML代码:
<response>Sent!</response>
那现在怎么办?
该消息是一个警告。XML文档是一种数据结构,但内部不包含任何表示形式/样式信息。通常,XML文档用于应用程序间通信,或者作为纯数据结构,然后与其他表示/样式信息一起使用,以显示给用户。
您正在使用以下行以xml
格式输出数据,
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
如果您试图从ajax调用中获取响应,请删除xml头并简单地使用echo
适当的响应或使用JSON
来获取数据。
或者,如果您想显示没有警告的xml文件,您可以将样式表附加到您的xml文档中,如下所示:
<?xml-stylesheet type="text/css" href="your_stylesheet.css"?>
XML样式表引用:http://www.w3.org/TR/xml-stylesheet/
相关文章:
- Firefox,如何提交表单触发文件下载,但停留在网页上
- Jssor滑块停留在第一个图像上,直到我单击它
- 在React中将方法从一个组件移动到另一个组件,并且仍然可以在原始组件中使用
- 在浏览器关闭时,单击确认对话框中的“停留在页面上”,执行一个方法
- 可以'在html中,没有任何东西可以停留在图片上方
- 如何在D3中添加一个强制拖动事件,并使节点停留在我离开它的地方
- javascript onmouseover/omouseout停留在前一个内容中,直到悬停/触发下一个内容
- 如果用户由于第二个处理程序中的对话框而停留在页面上,则跳过加载前处理程序
- 当结果点击值停留在文本框中时,自动完成搜索
- 在原始对象的基础上创建新对象的最简单方法,但没有几个字段
- 从窗口在原始页面中运行Function.打开javascript
- 停留在页面上取决于值jquery
- Jquery:图像获胜'点击后不会改变,而是停留在悬停图像上.
- 如何滚动浏览内容并停留在段落
- 我的猜测次数不会停留在正确的水平上
- Google Maps Javascript API停留在精简模式
- 为什么我的 Jquery 轮播不会停留在最后一张图片上
- 在原始克隆之后插入克隆
- AJAX-PHP;XML-POST请求指向PHP文件,而不是停留在原始页面
- 鼠标悬停时淡出到原始状态,或者单击鼠标停留在悬停状态