使用 xml 将 javascript 变量发布到服务器
Posting javascript variable to server using xml
我的第一篇文章在这里。我是Java/AJAX的新手,但我在PHP方面有一些经验。我正在尝试将 html 表单数据传递给 php 文件进行处理。目标是让 php 脚本处理表单数据并返回真/假标志。我正在尝试 AJAX,因为我不想刷新屏幕。根据 php 脚本的响应,弹出窗口将向用户提供信息覆盖现有屏幕。
我的HTML表单代码是:-
<form name="screen3" method="post" action="" id="scr3" />
<input type="image" src="images/proceed.jpg" alt="Proceed" id="proceed1" name="submit" value="Send" />
</form>
我已经使用 javascript 从表单重定向了提交按钮:-
<script type="text/javascript">
$(document).ready(function() {
$('#proceed1').click(function(e) {
e.preventDefault();
x=validateScreen3();
if (x) {getFormData();}
})
});
</script>
到目前为止一切顺利,validateScreen3((被调用并验证用户条目(不会让你厌烦脚本(。 getFormData被调用,但这就是问题所在:-
function getFormData() {
var xmlhttp;
var emailAddress = document.getElementById("emailaddress").value;
var entryCode = document.getElementById("entrycode").value;
var acceptance = document.getElementById("acceptance").value;
var Sel = document.getElementById("sel").value;
xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","test1.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("emailaddress="+emailAddress);
}
我已经确认变量数据正在传递给函数,但是上面引用的test1.php脚本似乎没有被调用/执行。这是测试1.php文件:-
<?php
$here = $_POST['emailaddress'];
echo '</div></div>';
if (!empty($here)) {
echo '<div style="position:absolute; top:100px; left:300px; width:400px; height:200px; background-color:#CCC; color:#000; z-index:50;">';
echo 'got the variable '.$here;
echo '</div>';
}
else {
echo '<div style="position:absolute; top:100px; left:300px; width:400px; height:200px; background-color:#CCC; color:#000; z-index:50;">';
echo 'DIDNT GET the variable '.$here;
echo '</div>';
}
?>
这些div 都没有出现,从我能想到的每个测试来看,该文件根本没有被调用。任何想法或建议将不胜感激。
你需要为XMLHttpRequest
的onreadystatechange
事件添加一个事件处理程序。当 PHP 发送其响应时,将触发此事件:
xmlhttp.onreadystatechange = function(response)
{
if (this.readyState===4 && this.status===200)
{//readyState 4 means request is finished
document.body.innerHTML += response;//since it's an HTML response...
}
};
但是由于您使用的是jQ,因此不必担心所有这些标头...只需检查$.ajax
.
在某些时候,你可能想放弃jQ,因为你必须支持较旧的浏览器(IE<9,甚至IE<8(。在这种情况下,这可能会有所帮助
澄清一下:
香草 JS:
var xhr =new XMLHttpRequest();
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function()
{
if (this.readyState === 4 && this.status === 200)
{//response is xhr property in vanilla JS
document.body.innerHTML += this.responseText;
}
if (this.readyState === 4 && this.status !== 200)
{//error in request
console.log(this);//<-- check your console
document.body.innerHTML += '<h1>Http error: ' + this.status;
}
};
xhr.open("POST","test1.php", true);
xht.send("emailaddress="+emailAddress);
这应该可以正常工作。如果由于某种原因没有,请尝试使用 jQuery,如下所示:
$.ajax({ url: 'test1.php',
type: 'POST',
data: {emailaddress: $('#emailaddress').val()},
success: function(response)
{
document.body.innerHTML += response;
}
});
如果这对您不起作用,那么可能是您的网址错误,或者运行PHP脚本的服务器在另一个域上,或者您必须发布后续问题。
希望这有帮助,不过
你已经编写了 JavaScript 来发出 HTTP 请求,但你还没有编写任何来使用响应中的数据。
您需要等到响应返回,然后对xmlhttp.responseText
执行某些操作。
请参见使用 XMLHttpRequest。
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 如何在HTML中显示服务器对象变量
- 未捕获的SyntaxError:具有服务器变量的意外标识符
- 如何向服务器端提交javascript变量
- 保存服务器中的变量
- 在app.settings中传递javascript变量(客户端变量到服务器端)
- 如果JS会话变量为null,如何避免500内部服务器错误
- 将变量从服务器上的外部文件加载到 HTML 文档中
- ASP:代码隐藏的字段变量在从更新面板中的服务器返回时丢失值
- 在客户端访问服务器变量时获取空字符串
- 将服务器变量设置为蒙戈集合 Meteor.js 中保存的数据
- 在ASP.NET WebForms中将服务器变量传递给客户端的正确方式
- 函数中的服务器变量
- 我如何传递node.js服务器变量到我的angular/html视图
- 如何在XSLT中添加服务器变量
- 如何仅在特定事件之后加载服务器变量
- 我如何在层之间传递http服务器变量,而不是将其用作node.js中不同文件中的require语句
- 如何在服务器变量改变值时触发jquery的变化?
- 如何在javascript上下文中定义服务器变量
- 服务器变量无法在谷歌标签管理器中识别.类型标签