0

ajax 函数的成功部分永远不会达到。我已经花了几个小时,仍然没有成功。代码已经被剥夺了几乎所有必要的东西,只是为了尝试消除任何可能的问题,但它仍然不起作用。

下面是我试图开始工作的剥离代码。谢谢你的帮助。

阿贾克斯:

function validLogin(){

    var url = "loginProcessAjax.php";

    $.ajax({
        type: 'POST',
        url: url,

        beforeSend: function() {
            //
            alert("sdfs");
        },

        success: function(html) {

            alert("success");
            alert(html.getElementsByTagName("worked")[0].firstChild.nodeValue);
        },

        error: function( error ) {
            console.log(error);
        }
    });
}

PHP:

 <?php
 header("Content-type: text/xml");
 echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
 echo "<worked>";
 echo "success";
 echo "</worked>";
 ?>

HTML:

<form method="post" action="" id="ourLoginFormID_JS">
                    <div class="ourContactFormElement2">
                        <label for="username">Username:</label>
                        <input type="text" id="username"  name="username" autocomplete="off" class="required" value="<?php if(isset($_POST['username'])) echo htmlentities($_POST['username']); ?>"  />
                    </div>

                    <div class="ourContactFormElement2">
                        <label for="password">Password:</label>
                        <input type="password" id="password" name="password" autocomplete="off" class="required"/>
                    </div>

                    <div class="ourContactFormElement2">
                        <label> &nbsp; </label>
                        <input type="submit" name="loginButton" id="loginButton" value="Login!" onclick="validLogin()"/>
                    </div>

                    <div id="statusLogin"></div>
                </form>

在 beforeSend 中,不会生成带有 xml 的警报框。另一个这样做,所以我知道它至少在调用该函数。

4

2 回答 2

0

您需要取消表单提交的发生

改变

onclick="validLogin()"/>

onclick="validLogin(); return false;"/>

最好onsubmit在表单上使用,而不是在按钮上使用点击事件。不使用内联事件处理程序会更好。

于 2013-07-19T13:39:02.123 回答
0

Spokey 在聊天中解决了这个问题。传奇。

by using $.ajax({
    type: 'POST',
    url: 'loginProcessAjax.php',
    beforeSend: function() {
        alert("sent");
    },
    success: function(html) {
        alert(html) 
    },
    error: function( x, status, error ) {
        alert(x.status + status + error);
    }
});

我们能够得到一个错误代码,然后导致

jQuery Ajax - 状态码 0?

这反过来又导致了几件事。首先,正如 espascarello 指出的那样,表单没有返回 false,所以它正在重新发送数据。修改后的 url 没有找到,这很奇怪,所以使用绝对路径来解决它。

谢谢你们每一个人的帮助

于 2013-07-19T14:19:13.593 回答