2009-09-09 5 views
0

j'ai un poste ajax comme

var ht = $.ajax({ 
    type: "GET", 
    url: "http://localhost/FormBuilder/index.php/forms/viewChoices/"+attribute_id, 
    async: false 
    }).responseText; 

     var myObject = eval('(' + ht + ')'); 


    var data = myObject;var j=0; 

alert(data.choices);//alerts the choices as object 

    $(""+<?php echo $form->input('field', array('type' => 'radio','legend'=>$r['Attribute']['label'],'separator' => '--separator--', 
      'options' => array()));?>+"").appendTo("#"+<?=$r['Attribute']['id'];?>); 

Dans la dernière ligne où je suis en train de créer un bouton de radio à l'intérieur JQuery qui me montre la légende correclty mais je suis en train d'utiliser le data.choices qui est une variable JQuery dans le tableau PHP ie dans 'options' => array() Comment faire ???

+2

De nombreux problèmes que vous postez sur SO devraient disparaître si vous preniez le temps de comprendre la différence entre Javascript et PHP. Cette question concerne Javascript et ASP, mais la réponse est la même: http://stackoverflow.com/questions/1192278/how-is-asp-net-and-javascript-related – deceze

Répondre

4

Vous confondez le langage côté serveur (PHP) avec la langue côté client (JavaScript/jQuery). Lorsque votre serveur traite le code PHP, il ignore totalement le code JavaScript, c'est juste un texte normal. Ensuite, après que la requête ait été traitée et envoyée au client, son navigateur commence à interpréter le JavaScript mais cette fois il n'a pas accès aux variables PHP (parce que la réponse était un HTML généré à partir du code PHP).

Je ne pense pas avoir bien compris votre question, si vous avez besoin que votre code soit traité par PHP, vous devez utiliser AJAX pour l'appeler depuis JavaScript et ensuite traiter les résultats. Si vous voulez générer ce bouton radio tout en générant le contenu du site, vous ne devez utiliser que des variables PHP et les utiliser pour créer votre bouton.

+0

Il ne peut pas se tromper si son javascript vient à partir d'un fichier php. – yoda

+2

Même si JS est généré par PHP, il n'est pas interprété jusqu'à ce que PHP termine son travail et le renvoie au navigateur, cela ne change rien. – RaYell

1

Juste pour clarifier pour vous, vos lignes de code:

$(""+<?php echo $form->input('field', 
          array('type' => 'radio', 
            'legend'=>$r['Attribute']['label'], 
            'separator' => '--separator--',      
            'options' => array()));?> 
    +"").appendTo("#"+<?=$r['Attribute']['id'];?>); 

Si le PHP en écho "text1" et "text2" respectivement. vous auriez

$("" + text1 + "").appendTo("#"+text2); 

Échouer car, ce ne sont pas des noms de variables. Faites une vue-source sur la page pour voir exactement ce qui est téléchargé dans le navigateur.

En outre, envisagez de définir la valeur PHP dans une variable cachée et de la référencer à partir de JavaScript. Le mélange du code côté serveur et côté client est souvent très confus. Quelque chose connu comme tag soup.