web-dev-qa-db-fra.com

jQuery load to variable

J'ai besoin d'insérer le résultat de jQuery load to variable.

Contenu de l'élément avec id test sur la page ajax.html.

$('#result').load('ajax.html #test');
15
honzahommer
$(document).ready(function(){
    $('#result').load('/ p#name', function(result) {
        var obj = $(this).find('p#name'), html = obj.html();
        obj.css({'font-size':40});
        $(this).append($('<div>').text(html));
    });
});

Exemple sur JSFiddle http://jsfiddle.net/kuroir/stD94/

6
MarioRicalde

Essayez d'utiliser jQuery.get à la place.

Par exemple.

$.get('ajax.html', function (data) {
    data = $(data).find('#test');
    // data contains your html
});
23
Daniel Baulig
$('#result').load('ajax.html #test', function(result) {
    var variable = $('#result').html();
});
11
Darin Dimitrov

Plus ou moins la même chose que ci-dessus mais plus simple:

var dt;
    $.get("ajax.html", function (data) {
        dt = data;
        // data contains your html
    });
7
Tsonev

Je poste ce message sur tous les threads stackoverflow qui demandent de l'aide pour graver les données d'une méthode jQuery ajax dans une variable plutôt que dans un élément HTML, car j'avais de la difficulté à trouver une solution qui fonctionnerait. J'ai finalement trouvé une solution et je veux simplement partager avec quiconque éprouve des difficultés avec cela.

Mon problème était que j'avais du mal à intégrer les résultats de jQuery ajax à mes variables au stade "document.ready" des événements.

Mes tests m'ont montré que l'ajax de jQuery se chargerait dans mes variables lorsqu'un utilisateur déclencherait un événement "onchange" d'une zone de sélection après le chargement de la page, mais que les données ne nourriraient pas les variables lors du premier chargement de la page. Mais je ne voulais déclencher aucun ajax sur mon événement "onchange"; Je voulais que variables, alimenté avec des données ajax au chargement de la page, gère le travail. Les variables sont utilisées pour modifier les données à la volée lorsque l'utilisateur déclenche un événement "onchange". De cette façon, il n'y a pas de décalage/ajax lorsque l'utilisateur interagit avec le formulaire; les données sont disponibles une fois la page chargée.

J'ai essayé beaucoup, beaucoup, beaucoup de méthodes différentes, mais au final, le code dont j'avais besoin se trouvait sur ce thread stackoverflow: JQuery - Stockage de la réponse ajax dans une variable globale

J'ai utilisé la réponse de Charles Guilbert. En utilisant sa réponse, je peux obtenir des données dans mes variables, même lors du premier chargement de ma page.

Voici un exemple de script de travail - espérons que cela aidera quelqu'un!

jQuery.extend
(
    {
        getValues: function(url) 
        {
            var result = null;
            $.ajax(
                {
                    url: url,
                    type: 'get',
                    dataType: 'html',
                    async: false,
                    cache: false,
                    success: function(data) 
                    {
                        result = data;
                    }
                }
            );
           return result;
        }
    }
);

// Option List 1, when "Cats" is selected elsewhere
optList1_Cats += $.getValues("/MyData.aspx?iListNum=1&sVal=cats");

// Option List 1, when "Dogs" is selected elsewhere
optList1_Dogs += $.getValues("/MyData.aspx?iListNum=1&sVal=dogs");

// Option List 2, when "Cats" is selected elsewhere
optList2_Cats += $.getValues("/MyData.aspx?iListNum=2&sVal=cats");

// Option List 2, when "Dogs" is selected elsewhere
optList2_Dogs += $.getValues("/MyData.aspx?iListNum=2&sVal=dogs");
4
CityPickle

Essayez $.ajax . $.load est juste un raccourci.

3
Alin Purcaru

Si vous voulez exactement charger func, essayez celui-ci:

var temp;
$(new Object()).load('YourUrl', { param: "smth" }, function(data){
  $('#element').prepend(data); //if you want prepend/append result to some html
  temp = data; //if you want put to variable
});
1
Taras Pukhliar

Utilisez setTimeout 

<script> 
    my_var=$('#hidden').load('new.html');
    setTimeout(function(){
        my_var=my_var.html();
        alert(my_var);
    }, 500);
</script>
0
Vitalicus
$('#submit').click(function(){ var taval = $("#message").val();
$("#showcomment").load('comments.php', {commentval:taval}) });
0
danish