Php 基本ajax逻辑

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

有人建议将Ajax用于html页面,我决定尝试学习它的工作原理。在我的示例中,我只是尝试从一个php文件(它只是作为测试回显一个简单的字符串)获取响应,但它不起作用,因为实际上什么都没有发生

<!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工作。