2009-09-09 33 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