2009-09-09 70 views
0

我有一個AJAX後像

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'];?>); 

在最後一行我在哪裏創建內部jQuery的單選按鈕,顯示我的傳說correclty但我嘗試使用data.choices是PHP數組內的JQuery變量,即'options'=> array()如何做?

+2

如果您花時間瞭解Javascript和PHP之間的差異,那麼您在SO上發佈的許多問題應該消失。這個問題是關於Javascript和ASP,但答案是一樣的:http://stackoverflow.com/questions/1192278/how-is-asp-net-and-javascript-related – deceze 2009-09-09 05:53:19

回答

4

您將服務器端語言(PHP)與客戶端語言(JavaScript/jQuery)混淆。當你的服務器處理PHP代碼時,它完全忽略了JavaScript代碼,它只是一個正常的文本。然後,在請求被處理併發送給客戶端後,他的瀏覽器開始解釋JavaScript,但這次它無法訪問PHP變量(因爲響應是從PHP代碼生成的HTML)。

我不認爲我完全理解你的問題,如果你需要你的代碼被PHP處理,你需要使用AJAX從JavaScript調用它,然後處理結果。如果你想在生成網站內容時生成這個單選按鈕,你應該只依賴PHP變量並使用它們來創建你的按鈕。

+0

他可能沒有錯,如果他的JavaScript來了從一個PHP文件。 – yoda 2009-09-09 06:26:28

+2

即使JS由PHP生成,它也不會被解析,直到PHP完成他的工作並將其發送回瀏覽器,這樣不會改變任何內容。 – RaYell 2009-09-09 07:06:10

1

只是爲了澄清對你,你的代碼行:

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

如果PHP分別呼應了 「text1」 中,而 「text2」。你會有

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

會失敗,因爲這些不是變量名稱。在頁面上查看源代碼以準確查看要下載到瀏覽器的內容。

此外,請考慮將PHP值設置爲隱藏變量並引用JavaScript中的值。混合服務器端和客戶端代碼通常很混亂。被稱爲tag soup