【问题标题】:Ajax vs submit - why don't I get the same responseAjax 与提交 - 为什么我没有得到相同的响应
【发布时间】:2013-01-24 22:14:14
【问题描述】:

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

不是完整的代码,请放心,其他部分如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!!");
    }
}

表格如下。当我使用提交而不是 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>

【问题讨论】:

    标签: javascript html ajax forms post


    【解决方案1】:

    我在您的代码中没有发现任何特别错误的地方。无论如何,表单名称都没有传递。

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

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

    XHR 可能正在添加一些额外的标头,并且服务器代码正在根据它们做一些不同的事情。

    【讨论】:

    • 感谢您的回答,但真的不知道提琴手是什么。我阅读了链接,但仍然感到困惑。有教程之类的吗?
    • 这两个工具都会在您的计算机上自动创建本地代理服务器,用于捕获并显示发生的 Web 请求和响应。只需启动该工具,然后在浏览器中尝试请求,您就会在 Fiddler 或 Charles 中看到原始请求/响应对。帮助在这里:fiddler2.com/Fiddler/help
    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2013-10-22
    • 2017-11-21
    • 2019-04-12
    • 2015-07-09
    • 1970-01-01
    • 2021-03-13
    相关资源
    最近更新 更多