2013-07-19 29 views
0

ajax函數的成功部分永遠無法到達。我花了幾個小時,仍然沒有成功。該代碼已被剝離幾乎所有必要的只是試圖消除任何可能的問題,但它仍然無法正常工作。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警告框。另一個這樣做,我知道它至少是調用函數。

+1

打開瀏覽器的調試器(F-12)並查看網絡流量。看看你的服務器響應是什麼。 –

+0

也許你的警報默默無聞 - 你自己這麼說,所以處理就停止了。如果只提醒「html」,你會得到什麼? – Zlatko

+0

直接在瀏覽器上檢查您的loginProcessAjax.php。我認爲你已經啓用了PHP短打開標記,並且第一個回顯失敗 –

回答

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 - Status Code 0?

,然後又導致了幾件事情。首先,espascarello指出表單沒有返回false,所以它重新發送數據。 修改後的網址沒有找到,這是奇怪的,所以使用絕對路徑解決它。

謝謝大家的幫助

+0

你不應該使用絕對路徑... – epascarello

+0

@epascarello我知道:)但它不喜歡相對的一個。我把它放到同一個文件夾中,試着將它移到它所屬的位置,各種各樣,但只是...不。任何想法? – null

0

您需要從發生取消表單提交

變化

onclick="validLogin()"/> 

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

這將是更好的形式,而不是在一個點擊事件上使用onsubmit按鈕。不使用內聯事件處理程序會更好。

+0

你的意思是給它一個ID,然後用JS? – null

+0

我得到了同樣的結果。 – null

+1

我不確定你在哪裏提出了一個ID,因爲我從未在我的帖子中提到過一個ID。所以你叫回報虛假,什麼都沒有發生? – epascarello