6
votes

Rejoignez plusieurs chaînes en une seule chaîne

J'ai une boucle qui génère une chaîne xxx pré>

avec console.log (singletring); code> p>

Je les vois tous générés : p> xxx pré>

mais comment puis-je créer une nouvelle variable allstrings code> qui concaténera toutes ces chaînes? La boucle fait partie d'une réponse AJAX en boucle via des nœuds XML pour récupérer les données de ces variables. Je suppose que j'ai besoin de les faire faire partie d'un tableau, puis de les rejoindre ensemble pour une grande chaîne? P>

Pour clarifier davantage ce que j'essaie d'atteindre est quelque chose comme: p>

$j.ajax({
    type: "GET",

    url: "test.xml",
    dataType: "xml",
    success:   function  parseXml(data)
    {
        $j('.loader').fadeOut();
        itemQueue = $j(data).find("ITEM").map( function ()
            {
                return {
                        date: $j("LAST_SCAN" , this).text(),
                        type : $j("PRODUCT_TYPE", this).text(),
                        cat : $j("CLASS_NAME", this).text(),
                        };  
            }).get();
            getNextItem();  

        }
    });

function getNextItem()
    {    
        var item = itemQueue[0];
        var singleString = item.date+ "," + item.type +  "," + item.cat + "\n";
        console.log( singleString );

        $j.ajax({
            url: s7query,
            dataType: 'jsonp'
        });
      }

function s7jsonResponse(response)
{
    var item = itemQueue.shift();
    if (itemQueue.length)
    {
        getNextItem();  
    }
    // run other processes when finished with checks
    if (!itemQueue.length)
    {   
        // alert ("ALL DONE");
    }
}


0 commentaires

3 Réponses :


18
votes

3 commentaires

J'ai mis à jour ma question, peut-être que c'était déroutant. Ce n'est pas ce que j'essaie d'atteindre. J'ai un seul nom de variable qui sera remplacé pour chaque boucle. Je voulais attraper toutes ces chaînes, puis les combiner tous en un.


@ZAC: Utilisez l'opérateur + = ? Allstrings + = SingleString;


Merci, je cherchais une autre solution mais tout en cherchant au hasard, j'ai eu cette réponse.



2
votes

Vous pouvez vous débarrasser si cette boucle et utilisez:

allStrings.concat(string1, string2, ..., stringX)


0 commentaires

0
votes

On dirait que vous faites des XHR séparés pour des nœuds XML indépendants, auquel cas vous voudrez peut-être reconsidérer votre approche. Si possible, je voudrais itération sur les nœuds XML dans leur intégralité et rassembleriez toutes les données requises nécessaires. Ensuite, vous pouvez faire un seul XHR (couper sur les connexions http, qui est bon!) Et obtenir une seule réponse pouvant contenir l'intégralité de la réponse (I.e. Allstrings). Il devrait être plus facile sur votre serveur et faire une différence notable sur le côté du client dans toutes les situations.


1 commentaires

Oui tu as raison. Je devais le faire comme ça comme ça.