2011-07-03 69 views
0

我在研究AJAX,它是關於表單驗證的,只要用戶填寫註冊用戶名,就會使用AJAX進行檢查而他仍然可以進入所有其他領域。所以我發出了一個請求,並在readystatechange上調用了一個回調函數。現在我已經研究過PHP,但我從來沒有遇到過從服務器返回信息。我的意思是說,我的PHP腳本中發生了什麼,以及我如何確保發出的請求按需要進行響應。我不想要確切的代碼,如果只是位,或者算法可以改進,如何在發出請求對象(AJAX)後從服務器獲取響應

例如,我知道我把用戶名和url一起傳遞給php腳本,然後檢查它是否匹配我的數據庫中存在的用戶名(MYSQL和查詢),通常我只是再次打印表單,如果有匹配,否則我會退出(); 但是當我想回應對象請求時,我該怎麼辦?

回答

0

當你掌握它時,它確實很容易。如果你使用jQuery的AJAX,http://api.jquery.com/jQuery.ajax/那就更簡單了 - 但除非你打算使用JavaScript的負荷不同意這種臃腫您的網站(和使用google's cdn吧)

在JavaScript中,你做一個XHR請求GET或POST到你的PHP腳本。通常你需要爲視圖創建一個單獨的文件給任何AJAX請求,因爲AJAX請求不應該帶回網頁的模板(即如果你想返回'1',它應該只返回'1',不<html><body>1</body></html>. ...等

例:

blah.com/index.php需要一些AJAX請求
blah.com有JavaScript代碼通過發送datastring/URL創建Ajax請求(如AJAX .php?act = verify_email & email = a @ c
然後blah.com/ajax.php會有一些PHP代碼可以切換($ _ GET ['act']或$ _POST ['act']) case'聲明'verify_email'。該代碼將運行s ome正則表達式或其他,並返回1或0來表示1(有效),0(無效)。在「onreadystatechange的」持有請求的狀態,所以我認爲它通常是一個功能,即:

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 

您訪問返回「0」或通過xmlhttp.responseText,其中XMLHTTP是var xmlhttp =new XMLHttpRequest();

「1」與形式根據你的情況,的onblur(當他們搬出元素的焦點),你可以運行AJAX請求發送的輸入值,:

然後你只需運行請求

xmlhttp.open("GET","ajax.php?act=verify_email&email="+document.getElementById('email').value,true); 
xmlhttp.send(); 

更新然後在ajax.php腳本中作爲GET或POST r equest,你可以運行你的驗證查詢來檢查用戶是否已經存在,或者用戶名是否無效等等。請求完成後,它將返回responseText值中的結果。如果可以的話,使用螢火蟲的控制檯檢查AJAX請求的結果,它非常有用。

+0

我不問javascript中的函數,有什麼要求是什麼在我的PHP腳本中返回我的響應。我會使用xmlHTTP.responseText,但我如何從我的PHP發送信息,稍後我可以通過xmlHTTP.responseText訪問? – Kraken

+0

只是迴應它,這就是你需要做的。如果您需要驗證用戶名,請將用戶名傳遞給服務器,運行您的查詢以檢查其有效性,然後只是** echo **您希望在xmlHTTP.responseText中顯示的內容,即echo'invalid';或'回聲'有效的電子郵件' – Benno

+0

哦!謝謝! ! – Kraken

0

這可能不是你的意思,但是你不能:

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
     // do something with "xmlhttp.responseText" 
     var x = xmlhttp.responseText 
} 

而在PHP只是:

echo $x; 

這工作正常發送字符串和其他信息...

相關問題