8
votes

SyntaxError: String untéral littéral

J'ai le code ci-dessous dans lequel je reçois l'étrange erreur.

results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';


14 commentaires

Fonctionne dans la console de chrome si vous changez résultats_html à une chaîne aléatoire sans guillemets, comment résultats_html ?


Qu'est-ce que rapport_excel exactement?


@Mrlister: C'est l'ID de la table que j'ai et que je l'utilise dans le code ci-dessus pour exporter ces données en format XLS.


Pour être clair, le code ci-dessus fonctionne bien dans le serveur local, mais au client, il ne fonctionne pas et que l'erreur étrange apparaît dans la console.files sont exactement la même chose que ...


On dirait que cela dépend du contenu 'Report_Excel'. BTW si vous utilisez jQuery, vous devez modifier .innerhtml à .html () , et si repor_excel est l'identifiant de certains éléments que d'ajouter un numéro à l'avant de celui-ci $ ('# reporter_excel') .


Quelques suggestions: (1) Essayez de modifier l'extension de fichier du fichier exporté pour vous assurer que le client n'a pas de problème spécifiquement avec le format .xls. (2) Modifiez vos premiers résultats_html en résultats_html1; Mettez ensuite à jour la ligne suivante pour être: Résultats_html = '

registre des salaires des employés
'+ résultats_html1 +' ';


Vous devez inclure l'erreur de la console que vous obtenez dans votre question. Cela nous aiderait à vous aider.


Qu'est-ce que ce retour? $ ('repor_excel'). innerhtml;


$ (id) et nouvel élément Suggérez l'utilisation de prototypejs , alors j'ai pris la liberté d'ajouter cette étiquette. Dans prototypejs, $ est un alias pour document.getelementByID . Voir aussi: API.Prototypejs.org


@Pavan: En 4 mois, vous n'avez plus d'observation que vous avez obtenu une erreur de syntaxe dans une ligne de code qui semble être syntaxiquement correcte. Le moins que vous auriez pu faire est d'écrire un test unitaire autour de cette ligne de code à prouve que l'erreur se produit dans cette ligne de code particulière. J'attends avec impatience votre Jsfiddle.


@Ruud je viens de modifier ma question!


@Pavan: toujours floue, alors j'ai plus de questions, désolé. Avez-vous essayé d'autres navigateurs Web (c.-à-d. / Chrome / Safari)? Je suppose que le bouton export appels export_to_excel . Ces lignes étranges sous les boutons sont-elles déjà là-bas lorsque la page se charge ou apparaissent-elles une fois que vous avez cliqué sur le bouton? J'espère que j'ai bien compris: une erreur se produit uniquement sur l'environnement de production, pas sur votre environnement local. Y a-t-il une différence dans la version de prototypejs? Veuillez ajouter console.log (résultats_html); juste au-dessus de la ligne donnant l'erreur et montre-nous le résultat (voir console); à la fois lorsque l'erreur, et quand ok?


Ça fonctionne bien dans chrome.Oe la fonction export_to_excel fait référence au bouton d'exportation.Les lignes sont déjà existantes lorsque la page chargée.Et maintenant, malheureusement, le serveur du côté client est modifié et que l'erreur n'apparaît pas. Maintenant, j'ai juste besoin de savoir pourquoi cette erreur est apparue auparavant.


@Pavan: Si personne (y compris vous-même) ne peut reproduire le problème, alors il n'y aura jamais une réponse.


6 Réponses :


2
votes

juste une suggestion: changez votre ligne de: xxx

à xxx

J'ai remplacé " avec ' et vicefersa .. Cela supprimerait probablement votre erreur.L'empêche.

Remarque: puisque dans le commentaire, vous avez mentionné que $ (' repor_excel ') Est-ce que vous êtes en train de tabler la bonne voie JQuery d'accéder à l'identifiant est $ ("# repor_excel") .. Utilisez #


2 commentaires

Merci pour votre réponse, mais son javascript n'est pas jQuery


@Pavan La raison pour laquelle il se réfère à JQuery est que la syntaxe $ ('') est utilisée dans JQuery, ainsi que des mootools. Les deux sont des bibliothèques JavaScript (donc des fonctions JavaScript réutilisables). Il semble donc que vous utilisiez une sorte de bibliothèque afin de faire la syntaxe $ (''). Sinon, que pensez-vous que le $ ('') devrait faire, si vous voulez que vous souhaitez que vous souhaitiez document.getelementbyid ('rapport_excel'). Innerhtml .



3
votes

J'ai implémenté votre code ci-dessous et ça fonctionne bien Définissez d'abord votre identifiant / classe d'abord dans cette ligne résultats_html = $ ('repor_excel'). Innerhtml; xxx


0 commentaires

2
votes

Le problème est avec les citations de votre contenu de résultats_html.

Il semble que vous utilisiez jQuery, (1) si vous êtes: p> xxx pré>

2.Si vous ne sont pas: échappez aux citations simples de votre contenu. P>

   results_html = $('report_excel').innerHTML;   
   results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td
   colspan="9"><b>Employee Salary Register </b></td></tr><tr><td
    colspan="9"></td></tr>' + results_html.replace(/'/g, "\\'"); +
    '</table></body></html>';


0 commentaires

1
votes

juste faire ceci:

<script type="text/javascript">
function export_to_excel() {
    var results_html = $('report_excel').html() ? $('report_excel').html() : "";
    results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';
    var input = new Element('input', {
        'type': 'hidden',
        'name': 'results[html]',
        'value': results_html
    });
    var form = new Element('form', {
        'method': 'post',
        'name': 'Employee Salary Register',
        'action': "html_to_excel"
    });
    form.append(input);
    document.body.appendChild(form);
    form.submit();
}
</script>


0 commentaires

0
votes

La solution consiste à placer le code JavaScript dans un fichier distinct (comme ExportExcel.js), puis inclure ce fichier de votre vue. Ne pas utiliser la balise!


0 commentaires

1
votes

Je sais que je suis en retard à la fête, mais j'avais un problème similaire et je laisserai mon correctif ici pour quelqu'un d'autre qui arrive à cela en googling l'erreur. J'essayais d'inclure une baisse locale à CDN hébergé angular angular: xxx

qui lance la même erreur littérale à chaîne intermine. Il s'est avéré que la balise de script final dans la chaîne d'écriture de document trébuchait sur l'analyseur. Il suffit d'échapper à la barre oblique dans la balise de fermeture citée. xxx

Astuce de chapeau: HTML5 Boiserie Projet.


0 commentaires