9
votes

Assigner jquery.get () à une variable?

Quelle est la bonne façon d'attribuer à une variable la réponse de jquery.get ()?

<tbody>
<table id="myTable"> 

    <script type="text/javascript">

        $.get('output.csv', function(data) {
                csvFile = jQuery.csv()(data);

                for ( var x = 0; x < csvFile.length; x++ ) {
                    str = "<tr>";
                    for ( var y = 0; y < csvFile.length; y++) {
                        str += "<td>" + csvFile[y][y] + "</td>";
                    }
                    str += "</tr>";
                }
                $('#myTable').append(str);


        });

    </script>

</tbody>
</table>


0 commentaires

5 Réponses :


1
votes

Il vous suffit de spécifier la fonction de rappel dans le paramètre pour obtenir la méthode. Vos données seront dans la variable que vous spécifiez dans la fonction.

$.get("output.csv", function(data) {
    // Put your function code here, the 'data' variable will hold your data.
});


0 commentaires

8
votes

Une fonction de rappel est requise pour les appels de fonction asynchrones, comme une demande d'obtention de Ajax. Il existe un délai entre appeler la fonction obtenir et obtenir une réponse en arrière, ce qui pourrait être un milliseconde ou plusieurs minutes, de sorte que vous devez avoir une fonction de rappel qui est appelée lorsque le get asynchrone a terminé ses travaux. .

Voici quelques informations supplémentaires sur JQuery's Ajax Get Fonction: http://docs.jquerery.com/ajax/jquery.get#urldatacallbacktype .

des exemples de JQuery: xxx

si Vous obtenez non défini lorsque vous essayez d'utiliser la variable DATA dans la fonction de rappel, ouvrez la console en Firebug dans Firefox et regardez la requête Obtenir Demande . Vous pouvez voir la demande brute et la réponse qu'elle revient. Vous devriez avoir une meilleure indication de la question après avoir vu ce qui est envoyé au serveur et ce qui est renvoyé au client.


2 commentaires

J'ai mis à jour ma réponse avec un conseil pour aider à résoudre la variable de données non définie.


@Dcrawmer Vérifiez ce que Dait pixeline. Si l'analyse de la demande d'obtention prend trop est préférable de prendre les données dans le rappel. En fait, c'est la bonne façon de le faire.



4
votes

En réalité dans votre exemple, les données seront l'objet de requête XMLHTTPRequest.

var x;
$.get( 'output.csv', function(data){
    x = data;
    console.log(x); // will give you the contents.
});


4 commentaires

Donné (à ma compréhension) que obtenez est asynchrone, ce ne serait pas le journal imprimer non défini à chaque fois?


Oui, ce code me donne indéfini à chaque fois, comment puis-je empêcher cela?


mettre la console.log () appelez à l'intérieur du rappel!


@pixeline a raison. Si l'appel prend trop longtemps, le journal est meilleur en rappel



3
votes

Tsvanharen a bien répondu à la question, mais le dcrawmer manque toujours le point. Permettez-moi de tenter une clarification pour lui. Je suis simplifiant une partie de cela et lisse sur certains détails.

Regardez le code ci-dessous. Ceci est à peu près le même code que Tsvanharen's, sauf que j'ai remplacé la fonction anonyme du rappel avec un pointeur de fonction réel et je suis un peu plus explicite pour que vous puissiez voir ce qui se passe: p>

1. "The value of X is"
2. "Data Loaded"


2 commentaires

Merci beaucoup pour la clarification. S'il vous plaît voir ma mise à jour à la question et dites-moi ce que je fais mal? Merci pour votre aide.


Diviser et conquérir. Assurez-vous que la jquery.get renvoie réellement les données que vous pensez être. Mettez une alerte (données) au début de la fonction pour vous assurer que les données ont été relues à partir de la sortie.csv correctement. (Ce n'est pas une URL bien formée, êtes-vous sûr que c'est ce que vous voulez?) Procédure de là.



4
votes

J'ai vraiment eu du mal à obtenir les résultats de JQuery Ajax dans mes variables au stade "Document.Ready" des événements.

JQuery's Ajax serait chargé dans mes variables lorsqu'un utilisateur a déclenché un événement "Onchange" d'une boîte de sélection Une fois que la page avait déjà chargé, mais les données ne produiraient pas les variables lorsque la page est chargée d'abord. P>

J'ai essayé beaucoup, beaucoup, beaucoup de méthodes différentes, mais à la fin, la réponse dont j'avais besoin était de cette question. Stackoverflow Page: JQUERY - Stockage d'Ajax Réponse dans la variable globale P >

Merci à Contributeur Charles Guilbert, je suis capable d'obtenir des données dans mes variables, même lorsque ma page se charge d'abord. p>

Voici un exemple du script de travail: P>

    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");


0 commentaires