Capturează variabila încorporată din apelul jQuery Ajax

Încerc să convertesc cadrul nostru JavaScript la jQuery pentru că vom avea nevoie de funcționalitatea suplimentară a jQuery pentru alte proiecte. Există o anumită funcție care este peste tot (și sa stabilit cum a fost setat ......) pe care aș vrea să o înlocuiesc cu un echivalent jQuery. Iată funcția originală Javascript care face un apel ajax la o pagină php.

function ajax(n,f,v){
    var ajaxRequest;
    if(window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
        ajaxRequest=new XMLHttpRequest();
    }
    else{// code for IE6, IE5
        ajaxRequest=new ActiveXObject("Microsoft.XMLHTTP");
    }
    ajaxRequest.onreadystatechange=function(){
        if(ajaxRequest.readyState==4 && ajaxRequest.status==200){

            //This is where the result is stored
            result = ajaxRequest.responseText;
            //parseScript pulls out the content and the div and populates the div with the retrieved content.
            parsed_result = parseScript(result);
            document.getElementById(parsed_result.div).innerHTML = parsed_result.source;
        }
    }
    ajaxRequest.open("GET","view.php?n="+n+"&f="+f+"&v="+v+"&time="+(new Date).getTime(),true);
    ajaxRequest.send();
}

function parseScript(_source) {
    var source = _source;
    var scripts = new Array();

    while(source.indexOf("<script") > -1 || source.indexOf(" -1) {
        var s = source.indexOf("<script");
        var s_e = source.indexOf(">", s);
        var e = source.indexOf("", e);

        scripts.push(source.substring(s_e+1, e));
        source = source.substring(0, s) + source.substring(e_e+1);
    }

    for(var i=0; i<scripts.length; i++) {
        try {
            eval(scripts[i]);
            var div = div;
        }
        catch(ex) {
        }
    }

    return {source: source, div: div};
}

Aceasta este în partea de sus a paginii care a fost doar recuperare (de aici funcția parseScript). Această div variabilă indică unde să pună conținutul preluat.

<script>
    var div = 'content_1';
</script>
<!-- some retrieved html -->

Funcția jQuery pe care aș vrea să o "plasez" în partea de sus a funcției JavaScript ar necesita să nu edulez deloc fișierul ajax de recuperare. Vedeți mai jos pentru încercarea mea la apelul jQuery.

function jAjax(n,f,v) {
$.get('view.php', 'n='+n+'&f='+f+'&v='+v, function(result) {
        if(result) {
            if($('#'+result.div).length) {
                $('#'+result.div).html(result);
            } else {
                console.log("Couldn't find the div= "+result.div);
            }
        } else {
            console.log("Couldn't find the names for n="+n+' f='+f+' v='+v);
        }
    });
}

Deci, întrebarea pe care o am este cum să folosesc jQuery pentru a capta o variabilă dintr-un apel ajax, astfel încât să pot popula că capture div cu html preluat?

Un alt lucru, da, pot sa ma gandesc la o multime de moduri de a face acest lucru in afara de a face acest lucru, dar acest lucru ar fi mai usor cu cadrul actual care a fost deja stabilit cand am ajuns aici. Deci, vă rugăm să sugerați doar modalități de a regăsi variabila din scriptul ajax. Mulțumesc mult!

0
@Jivings răspunsul cererii este un html care va fi populate într-un anumit div pe site. Variabila div spune ajax unde să pună div. Știu că jQuery execută orice Javascript încorporat atunci când se face un apel ajax la o pagină html. Trebuie doar să captulez valoarea variabilelor div pe pagina preluată în funcția echivalentă jQuery.
adăugat autor n0nag0n, sursa
Nu este foarte clar ce încerci să faci. Care este răspunsul solicitării și ce intenționați să faceți cu aceasta?
adăugat autor Jivings, sursa

1 răspunsuri

Nu există nici o construcție în așa fel încât să obțineți valoarea variabilelor într-un fișier JavaScript pe care l-ați recuperat prin metodele jQuery ajax. Cu toate acestea, ați putea să apelați funcția parseScript din interiorul callback-ului $ .get:

$.get('view.php', 'n='+n+'&f='+f+'&v='+v, function(result) {
        if(result) {
            parsed_result = parseScript(result);

            if($('#' + parsed_result.div).length) {
                $('#' + parsed_result.div).html(parsed_result.source);
            } else {
                console.log("Couldn't find the div= " + parsed_result.div);
            }
        } else {
            console.log("Couldn't find the names for n="+n+' f='+f+' v='+v);
        }
    });

EDIT:

Este posibil să fie necesar să efectuați acest apel cu metoda $ .axax (...) mai lungă, setând tipul de conținut în text, deoarece aveți o etichetă de script în pagină.

EDITARE (ALTERNATIVĂ):

S-ar putea să vă referiți pur și simplu la variabila "div" în apelul $ .get, deoarece la acel moment scriptul ar fi fost executat:

$.get('view.php', 'n='+n+'&f='+f+'&v='+v, function(result) {
        if(result) {               

            if($('#' + div).length) {
                $('#' + div).html(result);
            } else {
                console.log("Couldn't find the div= " + div);
            }
        } else {
            console.log("Couldn't find the names for n="+n+' f='+f+' v='+v);
        }
    });
0
adăugat
Nu este o soluție rea. Mi-am dorit oarecum să mă îndepărtez de funcția parseScript, singurul lucru pe care aș putea să-l gândesc este să facă un indexOf() pentru a găsi "var div =" și următorul "" după aceea. o sugestie buna.
adăugat autor n0nag0n, sursa
Am reușit să lucrez prin folosirea unui regex. Am încercat sugestia dvs. alternativă și nu a luat niciodată variabila div ca o variabilă locală pe care aș putea să o folosesc în .... :(
adăugat autor n0nag0n, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com