il modulo di completamento automatico / salvataggio del browser non funziona nella richiesta ajax

StackOverflow https://stackoverflow.com/questions/1622628

Domanda

È davvero difficile cercare una qualsiasi combinazione di parole chiave nel motore di ricerca perché utilizzata dallo sviluppatore più popolare voleva un completamento automatico personalizzato da Ajax.

La maggior parte degli sviluppatori cerca il completamento automatico personalizzato per ottenere risultati da db da ajax o su come disabilitare il completamento automatico del browser per motivi di sicurezza o voleva usare un altro extender di completamento automatico.

Comunque non sto parlando del completamento automatico. Sto scoprendo il semplice completamento automatico del browser normale o il browser salvato da IE o FF che agirà come una scelta recente a discesa durante la compilazione di un testo in una casella di testo.

È semplice e normale compilare un modulo come nome utente e password in un modulo di accesso. Dopo il modulo inviato (il post dei dati del modulo) il browser salverà il completamento automatico o l'evento in FF chiederà di salvare insieme alla password.

Ora, pensa al login inviato tramite ajax. I dati del modulo non vengono salvati automaticamente da IE o FF semplicemente perché il modulo non viene inviato per metodo postale. Sono abbastanza sicuro che sia a causa del metodo ajax vs post.

CMS come DotNetNuke usano questo modo ed è davvero difficile per me digitare nome utente e password per 5 accessi utente a scopo di sviluppo, evento che desidero consentire all'utente di salvare i propri dati del modulo nel browser senza alcuna personalizzazione o estensione. Con un altro esempio, l'utente può visualizzare e utilizzare la stessa e-mail per compilare un qualsiasi modulo e-mail nel sito Web o nel dominio.

Come risolvere il problema con questo? Hai suggerimenti su quali parole chiave sono più adatte alla ricerca?

CallMeLaNN

È stato utile?

Soluzione

Sto riscontrando lo stesso problema. Sono stato in grado di risolverlo per FireFox aggiungendo un iframe nascosto che invio tramite JavaScript prima di pubblicare il mio post AJAX. Non ho ancora trovato nulla che funzioni in Chrome / IE.

Altri suggerimenti

Ho riscontrato lo stesso problema e ho cercato un po '. Penso che la soluzione di seguito sia il modo più conveniente per risolverlo se si dispone di una pagina di accesso. Se consideriamo l'accesso inviato tramite ajax, nessuno dei browser ricorda o offre la funzione di completamento automatico per il campo del nome utente e della password, inoltre chiediamo di ricordare le credenziali. Ma se usi la funzione di invio javascript (probabilmente non è compatibile con le versioni precedenti dei browser), Tutti i browser offrono di salvare il nome utente e la password tranne IE. Ma ho trovato un altro javascript complicato per IE per offrirgli di salvare username e password.

Nella mia pagina di accesso, ho gestito il nome utente e la password e li ho inviati al server su richiesta Ajax e se l'accesso è riuscito, ho inviato il modulo con il metodo seguente, altrimenti è stato mostrato all'utente una casella di avviso che l'accesso non è riuscito.

Controlla il link qui sotto:

  

[EDIT]: collegamento interrotto

C'è una pagina fissa su questo problema nella pagina collegata, non posso darti un altro link a causa della mia reputazione. Cerca la quotazione di seguito nella pagina:

  

Guarda la pagina fissa.

Ovviamente, questo approccio non si adatta se si dispone di una sezione di accesso nella pagina predefinita a causa del modulo di invio. Ciò provoca lo sfarfallio della pagina. Mi chiedo se qualcuno ne abbia un'idea?

Ecco un codice jsery jsery discreto che invierà un modulo sia tramite ajax (metodo $ .post) a uno script di backend reale sia a uno script fittizio tramite un iFrame, quindi il browser salverà i dati inviati per il completamento automatico successivo .

Funziona benissimo con Chrome. Qualsiasi feedback è più che benvenuto!

var  formframesindex = 0;
function onSubmitAjax(evt){
    var $form = $(this);
    var framesubmitting = $form.hasClass('framesubmitting');
    var action = $form.attr('action');
    var original_action = action;

    if(!framesubmitting){
        $.post(action,$form.serialize()+"&ajax=1", function(responseText,message,request){
            formResponseHandler(responseText);
        }, "json");


        formframesindex++;
        var formframe = $("<iframe name='formframe_id_"+(formframesindex)+"' id='formframe_id_"+(formframesindex)+"' class='formframe' src='/fakeformreceiver.php'></iframe>");
        $('body').append(formframe);
        var target = $form.attr('target');
        $form.data('originaltarget',target);
        $form.data('originalaction',original_action);
        $form.attr('target','formframe_id_'+formframesindex);
        $form.attr('action','/fakeformreceiver.php');
        $form.addClass('framesubmitting');
        $form.submit();

    } else {
        var current_target = $form.attr('target');
        var original_action = $form.data('originalaction');
        var original_target = $form.data('originaltarget');
        var $frame = $('#'+current_target);
        setTimeout(function(){
            if($frame && $frame.length){
                $frame.remove();
            }
            $form.attr('action',original_action);
            $form.attr('target',original_target);
            $form.removeClass('framesubmitting');
        },100);
    }
    return framesubmitting;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top