2010-08-19 6 views
1

Comment puis-je scinder xmlhttp.responseText que je reçois d'une base de données sélectionner ligne par ligne? La mise en page de ma base de données contient 3 colonnes que je souhaite transférer à une fonction.Scinder xmlhttp.responseText ligne par ligne?

C'est ce que le responseText ressemble:

75px, 218px, foo, 12px, 13px, bar, 27px, 37px, bla 

La fonction doit être appelée:

myfunction(75px, 218px, foo) 

et ainsi de suite.

Quelqu'un peut-il me montrer un exemple de code?

+0

Où est votre problème niveau de client au niveau du serveur? À quoi ressemble la sortie? – epascarello

+0

Ne pas retourner un résultat codé JSON moi plus faisable pour cela? Cela aiderait à éviter les problèmes avec les champs de base de données contenant des délimiteurs de lignes, etc. –

+1

Il est absolument impossible que quelqu'un puisse répondre à la question si vous ne montrez pas d'abord à quoi ressemble le texte de votre réponse. (Pourquoi n'est-ce pas évident?) – Pointy

Répondre

0

Vous pouvez « split » le texte sur les virgules:

function handleResponse(rawResponse) { 
    function trim(s) { 
    return s.replace(/^\s*/, '').replace(/\s*$/, ''); 
    } 

    var attrs = rawResponse.split(','); 
    for (var i = 0; i < attrs.length; i += 3) { 
    myFunction(trim(attrs[i]), trim(attrs[i + 1]), trim(attrs[i + 2])); 
    } 
} 

modifier appeler réellement la fonction « trim » J'ai pris la peine d'inclure :-)

+0

N'est-il pas plus facile d'étendre l'objet 'String' avec' String.prototype.trim'? ;) –

+0

@Marcel bien sûr mais je pense qu'il est un peu dangereux de mettre des trucs comme ça dans les réponses de Stackoverflow - on ne sait jamais qui trouvera cette question et il suffit de couper-coller le tout, et de faire quelque chose comme ça – Pointy

Questions connexes