~ di opzione 1 di ritorno di AJAX che trasmette una richiesta usando un IFrame

IFrames fa un trasporto adatto per le chiamate asincrone perché possono caricare il soddisfare senza indurre l'intera pagina a ricaricare ed i nuovi elementi di IFrame possono essere generati usando il Javascript. L'attributo più piacevole circa un IFrame è che una forma può usare uno come relativo obiettivo, ricaricante quel IFrame anziché l'intera pagina; questo metodo permette che i grandi importi dei dati siano trasmessi all'assistente per mezzo dell'ALBERINO.

  

Una difficoltà nel usando un IFrame come trasporto è che la pagina che siamo caricamento deve essere HTML e deve avere un alimentatore di evento del onload di Javascript per dire al documento del genitore quando è caricamento fatto. Questo bisogno forza tutte le richieste che sono fatte con IFrames da fare alle pagine destinate per occuparsi delle richieste di IFrame. (codice non può afferrare appena una lima di XML nel senso che XMLHttpRequest permette.)

Si noti che l'uso di IFrames presenta un certo numero di ulteriori limitazioni:

Un vantaggio che un IFrame ha XMLHttpRequest eccessivo è che può essere usato per fare i uploads della lima. dovuto le limitazioni di sicurezza del browser, soltanto azioni dell'utente, come scattare una forma, può interagirsi con le lime sulla macchina dell'utente. Ciò fa l'ottimizzazione della forma come bersaglio ad un IFrame l'unica opzione per i uploads della lima che non coinvolgono un ciclo normale della ricarica dell'ALBERINO e della pagina della forma. Tuttavia, non ci è motivo che non potete cadere di nuovo a usando un IFrame per i uploads della lima e XMLHttpRequest per il resto delle vostre richieste di AJAX. A meno che stiate facendo le richieste a distanza di scripting-stile AJAX, funzionare intorno alle limitazioni di IFrame aggiungerà una quantità significativa di lavoro a tutto il progetto di sviluppo di AJAX.

Generazione del IFrame nascosto

Per ottenere la compatibilità massima con i più vecchi browsers, potreste appena aggiungere il IFrame al vostro HTML e dargli un formato di 0x0. (non potete nasconderli appena, o alcuni browsers non lo caricheranno.) Tuttavia, questo metodo non è elastico, in modo da desidererete generare dinamicamente la struttura. Non tutti i più vecchi browsers sostengono document.createElement, ma i browsers senza quel supporto difetteranno generalmente delle altre possibilità dinamiche state necessarie per usare i dati che state caricando, in modo da è meglio fornire il supporto loro una versione statica del HTML della pagina. Nel seguente esempio, il IFrame è generato usando il innerHTML perché è più semplice del generandolo che usando i metodi di DOM. Nota, tuttavia, che potrebbe anche essere generata con document.createElement, appena come la divisione a cui sta aggiungendo:

1 rDiv di varietà = document.createElement('div ');
2 rDiv.id = 'remotingDiv ';
uno stile di 3 varietà = 'border:0;width:0;height:0;';
4 rDiv.innerHTML = "";
6
7 document.body.appendChild(rDiv);

Generazione della forma

Se desiderate fare soltanto una richiesta di OTTEN, potete cambiare il valore della proprietà dello src del IFrame, ma fare l'ALBERINO, dovete usare una forma designata. OTTENGA non è una buona soluzione per le richieste di AJAX per due motivi: può trasmettere soltanto una quantità limitata di dati (un importo che cambiano secondo il browser) ed OTTIENE può essere nascosto e/o precaricato dagli assistenti di procura, in modo da non desiderate mai usarli per realizzare un'azione come aggiornamento della vostra base di dati.

Usando una forma con un IFrame è facile. Giusto l'insieme l'attributo dell'obiettivo della forma e quando presentate la forma, il risultato carica nel IFrame. Il seguente esempio genera la nostra forma e prefiggere i relativi obiettivi al IFrame ch'abbiamo generato più presto "la generazione nella sezione del IFrame nascosto" dell'articolo:

1 rDiv.form = document.createElement('form ');
2 rDiv.form.setAttribute('id ', id+'RemotingForm ');
3 rDiv.form.setAttribute('action ', URL);
4 rDiv.form.setAttribute('target ', identificazione);
5 rDiv.form.target = identificazione;
6 rDiv.form.setAttribute('method ', 'alberino ');
7 rDiv.form.innerHTML = ' 8 id="'+id+'Data" > ';

Trasmetta i dati dal soddisfare caricato al documento originale

L'unico senso sapere che il contenuto del IFrame ha caricato deve avere la pagina soddisfatta fa funzionare un certo Javascript che informa la pagina del genitore in cui il IFrame è incastonato. Il senso più semplice fare questo deve regolare l'alimentatore di evento del onload sul documento che state caricando. Questa limitazione significa che non potete usare un IFrame per il soddisfare arbitrario di caricamento come potete con XMLHttpRequest. Tuttavia, è ancora utile per i casi in cui una singola pagina dell'assistente già sta usanda come Gateway di AJAX. Qui è un esempio di onload:

Completi L'Esempio Di IFrame AJAX

Un esempio completo di un IFrame che AJAX chiede include due parti. La prima parte è il codice del cliente-lato per generare il IFrame e la forma. La seconda parte è il codice del assistente-lato, che redige alcuni dati e li trasmette di nuovo al documento del genitore nel relativo alimentatore di evento del onload.

La prima parte dell'esempio (elenco 1) è il codice di Javascript in una lima semplice del HTML. Questa pagina è usata per esaminare; la funzione di chiamata ripetuta avvisa appena il contenuto dei risultati. La seconda parte dell'esempio (elenco 2) è uno scritto semplice di PHP, che prende i dati dall'ALBERINO e li trasmette di nuovo al documento del genitore. Per fare un sistema utile, potreste anche desiderare includere alcune variabili supplementari nella forma, che direbbe al codice di PHP a che cosa fare con i dati uploaded, o potreste mettere la logica direttamente nello scritto ed usare una pagina differente dell'obiettivo per ogni operazione che avete desiderato compire.

Elenco del 1. Fare una richiesta di AJAX usando un IFrame

1
2
3
50
51
52
53
54
prova 55
56
57
58

L'elenco del 1 si compone di tre funzioni:

La funzione del createRemotingDiv (linee 5 - 28) unisce il codice precedentemente descritto per la generazione del IFrame nascosto con il codice per la generazione della forma per presentare ad esso. Quando la forma è generata, è designata contro il IFrame recentemente generato, rendente la all'uso di presentazione della forma invece di ricaricamento della pagina corrente. Mostrare il IFrame durante lo sviluppo è spesso utile nel processo mettere a punto in moda da poterli vedere voi tutta l'uscita generata dalla pagina che state denominando. Potete fare questo pubblicando lo stile in linea 8 e cambiandolo a width:200;height:200;.

La funzione più sendRequest (linee 30 - 40) fa una richiesta di AJAX. Prende il URL a cui fare la richiesta, un carico utile di trasmettere all'assistente e una funzione di chiamata ripetuta al funzionamento quando la richiesta è completa. La funzione usa il createRemotingDiv per installare il processo (linee 31-34). Allora gli aggiornamenti più sendRequest l'azione sulla forma di IFrame (linea 35), aggiunge il valore del carico utile sulla forma e presenta la forma usando il IFrame. Quando la nuova pagina è caricata nel IFrame, il nuovo documento usa un alimentatore del onload di Javascript per denominare la funzione di chiamata ripetuta che è stata passata nel metodo più sendRequest. La pagina di PHP che procede l'ALBERINO della forma e genera il Javascript del onload è indicata in elenco 2

Elenco dei 2. Pagina dell'assistente di PHP che maneggia una richiesta di IFrame AJAX

1
2
3
8
9 onload 10 =
11 "parent.document.getElementById('remotingDiv').callback(result)" >
12
13

Dal lato dell'assistente, la forma è proceduta e l'uscita è generata sotto forma d'un HTML page. Il senso più semplice aggiungere i nuovi dati deve generare il Javascript che contiene i nuovi dati. In questo caso, siamo giusti echeggiando i dati di nuovo al cliente mettendolo nella variabile di risultato (linee 4-6). Normalmente, sarete codice corrente del assistente-lato qui e producendo una stringa (come in questo caso) o aggiungendo il nuovo codice di Javascript al funzionamento contro il documento del genitore. La funzione di chiamata ripetuta sul genitore è denominata tramite l'alimentatore del onload sulla modifica del corpo (linea 11).

ciò è un articolo aggiunto dal carol Rudenberg


Diniego: Il nostro Web site non è responsabile delle informazioni contenute da questo articolo. Questo articolo in nessun modo riflette le viste, le opinioni, i pensieri o la credenza del personale dell'indice degli articoli.

Avviso di traduzione: L'articolo "~ di opzione 1 di ritorno di AJAX che trasmette una richiesta che usando un IFrame" è stato tradotto usando un servizio di traduzione automatizzato. Chiediamo scusa francamente per tutti gli errori di traduzione che hanno accaduto. Grazie per capire.

Online: 527 users browsing the articles directory