Ajax vs submit - 为什么我得不到同样的回复

时间:2013-02-09 03:14:32

标签: javascript html ajax forms post

我正在使用Ajax提交此内容。以框结尾的所有变量都是全局的

不是完整的代码,请放心,其他部分如init正在运行。

function begin() {
    if (confirm("Are you sure you want to proceed. This is completely up to you and all consequences go towards you!!"))
    {
        var usernameName = usernameBox.getAttribute("name");
        var passwordName = passwordBox.getAttribute("name");
        var hiddenName = hiddenBox.getAttribute("name");
        var username = usernameBox.value;
        var password = passwordBox.value;
        var hidden = hiddenBox.value;
        if (username !== "" && password !== "")
        {
            var http = new XMLHttpRequest();
            http.open("POST", "<?php echo $url_base, $action?>");
            http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

            http.onreadystatechange = function()
            {
                console.log(http.readyState + " " + http.status);
                if (http.readyState == 4 && http.status == 200)
                {
                    alert(http.responseText);
                }
                else
                {
                    alert("We had an error!!!");
                }
            }
            var query = hiddenName + "=" + hidden + "&" + usernameName + "=" + username + "&" + passwordName + "=" + password;
            //var query = usernameName + "=" + username + "&" + passwordName + "=" + password;
            console.log(query);
            http.send(query);
        }
        else
        {
            alert("don't be a fool fill out the info");
        }
    }
    else
    {
        alert("No refunds!!");
    }
}

表格如下。当我使用submit而不是onclick然后使用Ajax时,这个表单完美地工作,任何特殊原因都是为什么。它可能是表单名称。如果你想知道,我无法访问服务器。

<form name="signin_form" action="<?php echo $url_base,$action?>" method="post">
<input id='hidden' type="hidden" name="loginPage" value="student">
<label>Username <input id='userid' size="25" name="student_userid" tabindex="0"><br/></label>
<label> Password<input id='password' type="password" size="25" name="student_password"></br></label>
<input id='submit' style="COLOR: #6373b5" type="button" value="Sign In" width="100px" onclick="begin();">
</form>

1 个答案:

答案 0 :(得分:0)

我的代码中没有看到任何特别的错误。无论如何,表格名称都没有通过。

您是否检查过以确保请求与http://www.fiddler2.com/fiddler2/http://www.charlesproxy.com/相同?这些工具会自动在您的计算机上创建本地代理服务器,以捕获和显示Web请求和响应。只需启动该工具,然后在浏览器中尝试该请求,您将看到原始请求/响应对。

确保URLs,标题和正文匹配。

XHR可能会添加一些额外的标头,服务器代码会根据它们执行不同的操作。