Str*_*rry 4 javascript php ajax
所以现在,我只是使用基本表单来检查密码.我希望它检查密码并基本保留在page.html上,以便我可以使用JavaScript来提醒错误的密码或其他内容.我真的不确定该怎么做.它似乎会带我到check.php.我对整个过程不太确定,任何帮助表示赞赏!谢谢!
page.html中
<form action="check.php" method="post">
<input type="password" name="password" />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
check.php
<?php
$password = $_POST['password'];
if ( $password != "testing" ) {
die();
}
?>
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 10
PHP运行在Web服务器上,该服务器通常在物理上不同的机器(服务器端)上运行,而不是运行webbrowser(客户端).这些机器通常通过网络连接.HTTP是一种网络协议.webbrowser发送HTTP请求.Web服务器检索HTTP请求,其URL指示应将其转发到PHP以进行进一步处理.PHP检索HTTP请求并执行处理并返回HTTP响应.通常是普通的香草HTML页面的味道.Web服务器将HTTP响应发送回Web浏览器.
JavaScript在webbrowser上运行,因为它在Web服务器上运行,所以对PHP一无所知.PHP反过来也对JavaScript一无所知(尽管它可以产生一些JS代码,而这些代码又通过HTTP发送到webbrowser).在JS和PHP之间进行通信的唯一方法是HTTP.让JS触发HTTP请求并检索HTTP响应的方法之一就是使用XMLHttpRequest.这是Ajax背后的核心技术.
我在你的问题历史中看到你已经熟悉了jQuery.它是一个JS库,具有许多方便的函数来触发ajaxical请求.在这种特殊情况下,您想使用$.post.例如
$('#formId').submit(function() {
$.post('check.php', $(this).serialize(), function(valid) {
if (valid) {
alert('Valid!');
} else {
alert('Invalid!');
}
});
return false; // Important! This blocks form's default action.
});
Run Code Online (Sandbox Code Playgroud)
在check.php:
<?php
echo $_POST['password'] != "testing";
?>
Run Code Online (Sandbox Code Playgroud)
然而,这不是不引人注目的.如果用户已禁用JS,则所有操作都将失败.最好的办法是检查PHP是否有jQuery触发了ajaxical请求并进行相应处理:
if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
// Ajax.
} else {
// No ajax.
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以让jQuery也可以访问不同的URL或附加额外的参数.
更新:以下是不使用jQuery时JavaScript的外观:
document.getElementById('formId').onsubmit = function() {
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
if (xhr.responseText) {
alert('Valid!');
} else {
alert('Invalid!');
}
}
}
xhr.open('POST', 'check.php', true);
xhr.send(serialize(this));
return false; // Important! This blocks form's default action.
}
function serialize(form) {
var query = '';
for(var i = 0; i < form.elements.length; i++) {
var e = form.elements[i];
if (!e.disabled && e.name
&& ((e.type != 'checkbox' && e.type != 'radio') || e.checked)
&& (e.type != 'submit' || e == document.lastClicked))
{
if (query.length) query += '&';
query += e.name + '=' + encodeURIComponent(e.value);
}
}
return query;
}
document.onclick = function(e) {
e = e || event;
document.lastClicked = e.target || e.srcElement;
}
Run Code Online (Sandbox Code Playgroud)
臃肿和冗长,是的;)