programing

브라우저 자동 완성/수정 양식이 Ajax 요청에서 작동하지 않음

batch 2023. 8. 29. 20:16
반응형

브라우저 자동 완성/수정 양식이 Ajax 요청에서 작동하지 않음

대부분의 인기 있는 개발자들이 사용하는 Ajax에 의한 사용자 정의 자동 완성을 원했기 때문에 이것에 대한 검색 엔진의 키워드 조합을 검색하는 것은 정말 어렵습니다.

대부분의 개발자가 사용자 지정 자동 완성에 대해 검색하여 db by ajax에서 결과를 얻거나 보안상의 이유로 브라우저 자동 완성을 비활성화하는 방법에 대해 검색하거나 다른 자동 완성 확장자를 사용하려고 했습니다.

하지만 나는 자동 완성에 대해 말하는 것이 아닙니다.텍스트 상자에 텍스트를 채우는 동안 최근 선택한 드롭다운처럼 동작하는 IE 또는 FF에서 간단한 일반 브라우저 자동 완성 또는 브라우저 저장에 대해 알아봅니다.

로그인 양식에서 사용자 이름 및 암호와 같은 양식을 간단하고 일반적으로 입력합니다.양식이 제출된 후(양식 데이터 게시) 브라우저에 자동 완성 또는 FF의 이벤트가 암호와 함께 저장되도록 요청합니다.

이제 Ajax를 통해 제출된 로그인에 대해 생각해 보십시오.양식을 포스트 메서드로 전송하지 않았기 때문에 IE 또는 FF에서 양식 데이터를 자동으로 저장하지 않습니다.나는 그것이 아약스 대 포스트 방식 때문이라고 꽤 확신합니다.

DotNetNuke와 같은 CMS는 이러한 방식을 사용하며 개발 목적으로 5명의 사용자 로그인에 대한 사용자 이름과 암호를 입력하기가 매우 어렵습니다. 사용자가 사용자 지정이나 확장자 없이 브라우저에 자신의 양식 데이터를 저장할 수 있도록 하고 싶습니다.다른 예로, 사용자는 동일한 전자 메일을 보고 사용하여 웹 사이트 또는 도메인에 있는 전자 메일 양식을 채울 수 있습니다.

이것을 어떻게 해결합니까?검색하기에 더 적합한 키워드가 무엇인지 제안하셨습니까?

콜미LaNN

저도 같은 문제를 겪고 있습니다.저는 AJAX 게시물을 작성하기 전에 자바스크립트를 통해 제출하는 숨겨진 iframe을 추가하여 FireFox용으로 해결할 수 있었습니다.크롬/IE에서 작동하는 것을 아직 찾지 못했습니다.

저는 같은 문제에 직면하여 검색을 조금 했습니다.로그인 페이지가 있다면 아래 솔루션이 가장 편리하게 해결할 수 있는 방법이라고 생각합니다.Ajax를 통해 제출된 로그인을 고려할 때 사용자 이름 및 암호 필드에 대한 자동 컴파일 기능을 기억하거나 제공하는 브라우저가 자격 증명을 기억하도록 추가로 요청하지 않습니다.그러나 Javascript 제출 기능을 사용하는 경우(아마도 이전 버전의 브라우저와 호환되지 않을 수 있음) IE를 제외한 모든 브라우저에서 사용자 이름과 암호를 저장할 수 있습니다.하지만 저는 IE가 사용자 이름과 암호를 저장하기 위해 제공하는 또 다른 자바스크립트가 까다롭다는 것을 발견했습니다.

로그인 페이지에서 사용자 이름과 비밀번호를 처리하여 Ajax 요청으로 서버 측에 전송하였으며 로그인이 성공하면 아래 방법으로 양식을 제출하였습니다. 그렇지 않으면 로그인 실패를 알리는 알림 상자가 사용자에게 표시되었습니다.

아래 링크를 확인하십시오.

[EDIT]: 링크가 끊어졌습니다.

링크된 페이지에 이 문제에 대한 고정 페이지가 있습니다. 제 평판 때문에 다른 링크를 드릴 수 없습니다.페이지에서 아래 인용문을 검색하십시오.

고정 페이지를 보세요.

물론 양식 제출 때문에 기본 페이지에 로그인 섹션이 있는 경우에는 이 방법이 적합하지 않습니다.그러면 페이지가 깜박거립니다.누군가가 그것에 대해 알고 있는지 궁금합니다.

다음은 Ajax($.post 메서드)를 통해 실제 백엔드 스크립트와 iFrame을 통해 더미 스크립트 모두에 양식을 제출하는 방해가 되지 않는 jsjQuery 코드입니다. 따라서 브라우저는 이후 자동 완성을 위해 제출된 데이터를 저장합니다.

이것은 크롬 아래에서 잘 작동합니다.어떤 피드백이든 환영합니다!

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;
}

언급URL : https://stackoverflow.com/questions/1622628/browser-autocomplete-saved-form-not-work-in-ajax-request

반응형