2012-06-01 102 views
1

如何使用javascript連接和訪問數據庫的值? 我想註冊一個用戶,所以當我要創建用戶時,我想檢查用戶名是否可用(意味着要對數據庫執行搜索操作)? 我們可以用javascript做到這一點嗎?因爲它是用於客戶端,所以我很困惑?使用javascript訪問數據庫?

+0

mysql數據庫? – gopi1410

回答

2

我們可以用javascript做到這一點嗎?因爲它是用於客戶端,所以我很困惑?

JavaScript是一種通用編程語言,而不是客戶端語言。人們總是在服務器端使用它。

但是,如果你的意思是,你可以使用JavaScript 在Web瀏覽器到你的服務器上訪問數據庫,得到的答案是:不是直接的,沒有(當然,除非你是在Intranet和跳過籃球,你真的不想跳過);你需要一箇中間層。您可以讓客戶端上的JavaScript將消息發送到服務器(例如,通過ajax);服務器端代碼需要處理這些消息,確保它們是有效的而不是惡意的,然後非常謹慎地更新數據庫並將結果發送回客戶端瀏覽器。

服務器端語言可以是JavaScript或您希望在服務器上使用的任何其他語言。我注意到你標記了你的問題jsp,所以你可能想用Java編寫服務器端的東西(而不是JavaScript)。如果是這樣,如果你想要讓你擁有一個現代化的,非頁面刷新體驗使用AJAX,它看起來是這樣的:

  1. 用戶執行與行動,提高瀏覽器的事件。

  2. JavaScript代碼通過向服務器發送ajax消息來處理事件;在登錄的情況下,你可能想要做一個POST

  3. 甲JSP(或更好的是,一個servlet)

    1. 接收POST消息

    2. 驗證的內容,檢查惡意內容和其它類似的攻擊

    3. 查詢和/或使用準備好的語句和類似語句更新數據庫,以避免SQL注入攻擊

    4. 發送響應,與信息有關的操作

  4. 的JavaScript代碼接收到POST AJAX調用的響應,並看着它,看看發生了什麼事

+0

如果您使用ajax通過REST API查詢數據庫,該怎麼辦? –

+1

@FranciscoSalvador:上面沒有改變。 JSP很可能使用RESTful URL。 –

0

感謝上帝使用JavaScript無法實現。您需要一個服務器端腳本語言來驗證某個用戶對數據庫的輸入。

+0

JavaScript經常用作服務器端腳本語言。 –

+0

是的,但據我瞭解他的問題,他想在客戶端使用JavaScript! – Amberlamps

+0

是的,但要說「JavaScript不可能」是錯誤的說法。 :-) –

0

您shouldn't使用客戶端的JavaScript有幾個原因Access數據庫(不好的做法,安全問題等),但如果你真的想這樣做,這裏有一個例子:

var connection = new ActiveXObject("ADODB.Connection") ; 

var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB"; 

connection.Open(connectionstring); 
var rs = new ActiveXObject("ADODB.Recordset"); 

rs.Open("SELECT * FROM table", connection); 
rs.MoveFirst 
while(!rs.eof) 
{ 
    document.write(rs.fields(1)); 
    rs.movenext; 
} 

rs.close; 
connection.close; 

更好的辦法連接到SQL服務器將使用一些服務器端語言,如PHP,Java,.NET等。客戶端JavaScript應該只用於接口。

還有一個關於服務器javascript存在的古老傳說的流言,但這是另一回事。 ;)

2

直接的結果,不。 JavaScript通常運行在不可信的機器上。 由於JavaScript是一種腳本語言。所以,你應該考慮使用Ajax調用(如後)來訪問你的服務器數據庫...

類似thread討論這個問題