2009-09-01 5 views
1

J'ai utilisé CakePHP form-> entrée pour créer une boîte à l'intérieur JQuery utilisant Dropdownchaîne non terminée dans JQuery

$('<?php echo $form->input($r['Attribute']['label'], array('name'=>$r['Attribute']['label'],'options'=>array(1,2,3)));?>').appendTo("#main #EntrySubmit"); 

Mais sa me montrant l'erreur comme chaîne littérale ... non terminée Pourquoi donc ???

+0

$ ("selector"). AppendTo ("selector2") - ajouter à attend un ensemble d'éléments, qui a été sélectionné. Vous essayez de mettre du code html au lieu du sélecteur - c'est pourquoi les erreurs. Voir ma réponse éditée pour plus. – stefita

+0

il n'y a rien de mal avec la partie 'appendTo()' du code. Voir les docs: http://docs.jquery.com/Manipulation/appendTo – nickf

Répondre

-1

Vous avez probablement besoin d'échapper les guillemets simples dans la sortie $form avec addslashes().

--edit2

addcslashesh() ajoute la fuite ombles \ aux caractères spécifiés. Vous avez des guillemets simples dans votre code JS, c'est pourquoi vous devez échapper les guillemets simples existants dans votre sortie php.

$("#main #EntrySubmit").append(' 
<?php 
echo addcslashes(
    $form->input($r['Attribute']['label'], 
       array('name'=>$r['Attribute']['label'], 
         'options'=>array(1,2,3)) 
       ), 
    "'" 
    ); 
?> 
'); 
+0

peut me donner des informations sur addslashes() – useranon

+0

Encore je suis en train de geeting l'erreur en tant que chaîne littérale non terminée $ (' – useranon

+0

à quoi ressemble votre sortie php? – stefita

-1

Le codage couleur fournit un indice. Vous imbriquez des guillemets simples entre guillemets simples. Enveloppez votre code php entre guillemets et les choses devraient améliorer:

$("<?php echo $form->input($r['Attribute']['label'], array('name'=>$r['Attribute']['label'],'options'=>array(1,2,3)));?>").appendTo("#main #EntrySubmit"); 

Les guillemets simples imbriqués ne sont plus ambiguës et sont interprétées correctement.

+0

si j'ai utilisé comme vous l'avez dit je reçois erreur comme manquant) après la liste des arguments $ ("

") .appendTo ("# main #EntrySubmit"); – useranon

+1

les guillemets à l'intérieur des balises ' 'Sont évalués séparément côté serveur et n'affectent pas les guillemets javascript en dehors de celui-ci. – nickf

+0

Bon point, nickf. Ma faute. –

5

Je pense que vous pourriez avoir un problème si votre PHP sort des sauts de ligne. par exemple:

// BAD: 
$('<div class="input select"><label for="Gender"> 
    Gender</label>').appendTo(...) 

// GOOD: 
$('<div class="input select"><label for="Gender">Gender</label>').appendTo(...) 

Si tel est le cas, remplacer les sauts de ligne avec un espace ou rien:

// change from this: 
$('<?php echo $form->input("blah", ...); ?>').appendTo(...) 

// to this: 
$('<?php echo str_replace(array("\r\n", "\r", "\n"), "", $form->input("blah", ...)); ?>') 
    .appendTo(...) 

... ou si vous voulez garder les nouvelles lignes, vous devrez échapper à eux avec une barre oblique.

// this gives "Unterminated string literal"  
var x = 'abc 
def'; 

// this gives you "abcdef" 
var x = 'abc\ 
def'; 
Questions connexes