Php 基本ajax逻辑
有人建议将Ajax用于html页面,我决定尝试学习它的工作原理。在我的示例中,我只是尝试从一个php文件(它只是作为测试回显一个简单的字符串)获取响应,但它不起作用,因为实际上什么都没有发生Php 基本ajax逻辑,php,html,ajax,Php,Html,Ajax,有人建议将Ajax用于html页面,我决定尝试学习它的工作原理。在我的示例中,我只是尝试从一个php文件(它只是作为测试回显一个简单的字符串)获取响应,但它不起作用,因为实际上什么都没有发生 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title> Incident Cente
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title> Incident Center </title>
<!--<link rel="stylesheet" href="http://web.njit.edu/~swp5/assignment/style/style.css">-->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function onsubmit()
{
var sender;
if (window.XMLHttpRequest)
{
sender=new XMLHttpRequest();
}
else
{
sender=new ActiveXObject("Microsoft.XMLHTTP");
}
sender.onreadystatechange=function()
{
if (sender.readyState==4 && sender.status==200)
{
document.getElementById("myDiv").innerHTML=sender.responseText;
}
}
sender.open("GET","proz.php",true);
sender.send();
}
</script>
</head>
<body>
<div class="header">
Incident Center
</div>
<p>
<button onclick="onsubmit()">Test</button>
</p>
<div id="myDiv"></div>
</body>
</html>
事件中心
函数onsubmit()
{
var发送器;
if(window.XMLHttpRequest)
{
发送方=新的XMLHttpRequest();
}
其他的
{
发送方=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
sender.onreadystatechange=函数()
{
if(sender.readyState==4&&sender.status==200)
{
document.getElementById(“myDiv”).innerHTML=sender.responseText;
}
}
open(“GET”,“proz.php”,true);
sender.send();
}
事件中心
试验
为什么不使用jQuery 为什么不使用jQuery Send实际上没有显示任何内容。Send调用页面并填充两个不同的变量。send所做的是填充发送者的“responseXML”和“responseText”属性。发送后请尝试:
alert(sender.responseText);
请参见发送实际上不显示任何内容。Send调用页面并填充两个不同的变量。send所做的是填充发送者的“responseXML”和“responseText”属性。发送后请尝试:
alert(sender.responseText);
请参见使用jQuery进行此操作要容易得多,因为它具有内置的AJAX功能。您的代码如下所示:
jQuery.ajax({
type: 'get',
url: 'proz.php',
error: function(r) {
alert("Something went wrong - "+r);
}
success: function(response) {
alert(response);
}
});
希望这会有所帮助,因为jQuery有一个内置的AJAX功能,所以使用jQuery做这件事要容易得多。您的代码如下所示:
jQuery.ajax({
type: 'get',
url: 'proz.php',
error: function(r) {
alert("Something went wrong - "+r);
}
success: function(response) {
alert(response);
}
});
希望这对使用Opera 11.51有所帮助,但实际上它并不喜欢使用函数名
onsubmit()
。大概是因为onsubmit()
实际上已经是
元素本身的eventhandler钩子。我想其他浏览器也不会喜欢这个函数名
因此,首先,重命名函数。让我们在这里假设dosubmit()
此外,您应该在
元素中包装一个按钮。由于默认按钮充当提交按钮,因此表单正在提交,导致页面重新加载
为了防止这种情况,应该让函数
返回false编码>并像这样调用函数onclick=“return dosubmit()”
,如果您要像这样内联调用它,或者使按钮成为按钮类型button
,像这样:
在这里使用Opera 11.51,它实际上不喜欢使用onsubmit()
作为函数名。大概是因为onsubmit()
实际上已经是
元素本身的eventhandler钩子。我想其他浏览器也不会喜欢这个函数名
因此,首先,重命名函数。让我们在这里假设dosubmit()
此外,您应该在
元素中包装一个按钮。由于默认按钮充当提交按钮,因此表单正在提交,导致页面重新加载
为了防止这种情况,应该让函数返回false编码>并像这样调用函数onclick=“return dosubmit()”
,如果您要像这样内联调用它,或者使按钮成为按钮类型的按钮,像这样:
,正如我在评论中已经提到的,您应该检查请求的响应代码,看看是否出现了问题。将以下行添加到onreadystatechanged
函数的开头:
alert(sender.readyState + ', ' + sender.status + ', ' + sender.responseText);
根据此输出,您可能可以确定您的错误。正如我在评论中已经提到的,您应该检查请求的响应代码,以查看是否出现了错误。将以下行添加到onreadystatechanged
函数的开头:
alert(sender.readyState + ', ' + sender.status + ', ' + sender.responseText);
根据此输出,您可能可以确定错误。原因之一:您的HTML格式不正确。缺少开头标记。但我不知道这是否是问题的原因。对不起,我对代码的原始状态做了一些修改,只是为了简化它,以便缩小可能性。我忘了删除另一个标签。您在请求后检查了响应代码吗?仅当sender.status==200时才设置responseText。例如:您的HTML格式不正确。缺少开头标记。但我不知道这是否是问题的原因。对不起,我对代码的原始状态做了一些修改,只是为了简化它,以便缩小可能性。我忘了删除另一个标签。您在请求后检查了响应代码吗?只有当sender.status==200时,才会设置responseText。在他的问题中,他表示他正在努力了解这一切是如何工作的。在这种情况下,最好是这样尝试,而不是使用jQuery在幕后完成所有实际的AJAX工作。在这种情况下,最好是这样尝试,而不是使用jQuery在幕后完成所有实际的AJAX工作。在这种情况下,最好是这样尝试,而不是使用jQuery在幕后完成所有实际的AJAX工作。在这种情况下,最好这样尝试,而不是使用jQuery在幕后完成所有实际的AJAX工作。