AJAX ha bisogno di utilizzare un linguaggio lato server come PHP / ASP.NET / Java per accedere a un database?

2

AJAX ha bisogno di utilizzare un linguaggio lato server come PHP / ASP.NET / Java per accedere a un database? O una sorta di servizio web legato a queste lingue? Oppure AJAX è in grado di comunicare direttamente con il database?

    
posta Ein Doofus 16.06.2011 - 15:39
fonte

5 risposte

4

Ajax non può accedere a nessun database, poiché non è un linguaggio, né una tecnologia precisa.

Intendi javascript? Non penso che js possa aprire un socket direttamente sul tuo server sql. Ad ogni modo, ciò richiederebbe che il tuo server db fosse aperto, il che è una cattiva idea nella maggior parte dei casi.

Potresti anche usare l'API di localstorage, se tutto ciò che ti serve è archiviare un pezzo limitato di dati clint side.

    
risposta data 16.06.2011 - 15:58
fonte
2

Può se il motore del database stesso ha endpoint pubblici (un server web) integrati in esso. Non ne so nulla, ma alcuni non sono lontani. Ad esempio, comunichi già con MongoDb tramite Json. Questa domanda implica che ci sono alcuni livelli intermedi che puoi semplicemente rilasciare esporre tali endpoint tramite Http. Inoltre puoi probabilmente usare Plugin OData .

In ogni caso non è facile ed è decisamente una cattiva idea - come faresti l'autenticazione? Avete intenzione di consentire a chiunque su Internet di inviare dati direttamente nel vostro database? Per eliminare le cose?

    
risposta data 16.06.2011 - 16:19
fonte
1

AJAX è il lato client. È necessaria una connessione lato server al database. Questo è per lo più fatto in PHP, ASP.NET o Java.

È possibile connettersi a un database dal client, ad esempio in questo modo:

<script language="JavaScript" > 

function getSubmit() 
{ 
var LastName; 
var Firstn = names.value ; 

var cn = new ActiveXObject("ADODB.Connection"); 
//here you must use forward slash to point strait 
var strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:/clientDB.mdb"; 
var rs = new ActiveXObject("ADODB.Recordset"); 
//var SQL = "INSERT INTO Customers(FirstName, Surname)" 
//+ " VALUES ( '"+ names.value +"', '" + surname.value +"')"; 
var SQL = "select Surname, DOB from Customers where FirstName = '" + Firstn + "'"; 

cn.Open(strConn); 
rs.Open(SQL, cn); 
surname.value = rs(0); 
DOB.value = rs(1); 
//alert(rs(0)); 
rs.Close(); 
cn.Close(); 
} 
</script> 

fonte

Ma questo comunicherà ai visitatori il nome utente e la password del database. Ecco perché viene utilizzata una lingua lato server.

    
risposta data 16.06.2011 - 15:59
fonte
0

Innanzitutto, AJAX opera utilizzando il protocollo HTTP con payload JSON o XML. La maggior parte dei database opera utilizzando protocolli proprietari, con il payload che è l'input SQL, i dati grezzi come output.

In secondo luogo, la maggior parte delle applicazioni web fornisce sicurezza a livello di applicazione. Dare accesso diretto al database sarebbe un enorme buco di sicurezza. Con le applicazioni web, la vera sicurezza può essere raggiunta solo dalla logica lato server. In teoria, è possibile ottenere ciò utilizzando viste, stored procedure e ogni utente webapp come account DB separato. Ma ciò sarebbe poco pratico, è molto più facile ed efficiente farlo con un linguaggio generico lato server.

    
risposta data 16.06.2011 - 16:49
fonte
0

Prima di tutto, nota che AJAX sta per JavaScript asincrono e XML . Sapendo che non risponde direttamente alla tua domanda, ma è utile.

Ad ogni modo, AJAX è un termine generico per un determinato uso di un cluster di tecnologie lato client, quindi per definizione non accede direttamente al server. Voglio dire, la definizione del termine è praticamente "utilizzando JavaScript in una pagina web per comunicare con il server". Sebbene JavaScript possa essere usato per programmare sul server, questo è inusuale e comunque il codice è sicuramente ancora lato server (cioè JavaScript nella pagina web sta comunicando con JavaScript sul server).

Quindi la risposta è che non si accede al database direttamente dal codice lato client e si ha bisogno del codice in esecuzione sul server per accedere al database. Il codice lato client comunica con il codice lato server usando qualcosa come un'API RESTful di richieste GET / PUSH.

    
risposta data 16.06.2011 - 16:29
fonte

Leggi altre domande sui tag