2013-01-06 51 views
1

所选的单选按钮将通过下拉框显示其相应的城市列表。 例如,在所选的单选按钮“安大略省”上,将出现一个包含匹配城市的下拉框(在本例中,“地区”为安大略省,ID为77)。在PHP和JavaScript之间交换变量

所有PHP函数,循环和在下面的例子中所提到的JavaScript代码,是否正常工作:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#locationTree input:radio').change(function() { 
    var buttonPressed = $('input:radio[name=Region]:checked').val(); 

    if(buttonPressed == 77) { 
     var listCities = $("select[name='City']"); 
     <?php View::newInstance()->_exportVariableToView(77); ?> 
     <?php while(has_list_cities()) { ?> 
     $("<option><?php echo list_city_name(); ?></option>").appendTo(listCities); 
     <?php } ?>     
    } 

    }); 
}); 
</script> 

要获取不同区域的城市名单,并没有具体到77,我可以稍微改变PHP代码如下:

<?php View::newInstance()->_exportVariableToView($regionCode); ?> 

并且由于“buttonPressed”变量检测的“区域”所选择的ID,我可以添加以下简单的脚本:

<?php $regionCode = "<script>document.write(buttonPressed)</script>"; ?> 

上述变化后:

var listCities = $("select[name='City']"); 
<?php $regionCode = "<script>document.write(buttonPressed)</script>"; ?> 
<?php View::newInstance()->_exportVariableToView($regionCode); ?> 

我知道PHP运行服务器端的JavaScript运行客户端,但我认为我的交换PHP和JavaScript应该工作之间的变量简单的解决方案...但它不”工作。我真的要求有人帮我搞定。

+0

我看来像你期望的'$ regionCode'变量通过运行一些JavaScript来设置,正如你所说,PHP ru ns在服务器上,所以到JavaScript代码运行的时候,该页面早已离开服务器,并且它不能像那样工作。你必须使用ajax来获得一个'newInstance()',它基于在客户端单击的按钮。 – adeneo

回答

2

通过使用HTML 5提供的数据属性属性交换变量(服务器到客户端)。我这样做是为了初始页面加载。

要在初始页面加载后交换变量,可以使用ajax调用。

数据属性例如

通过PHP HTML写

<div id='universals' data-path='/zz/' data-load='1'></div> 

的JavaScript

var data_dom = $('#universals')[0], 
    key, 
    universals = []; 
for (key in data_dom.dataset) { 
    universals[key] = data_dom.dataset[key]; 
} 
+0

感谢您的反馈,您能否告知我简单的解决方案为什么不起作用? – blsn

+1

重构您的代码,以便您不使用PHP编写您的JavaScript。这没有错,但很难阅读。如果您需要服务器端变量,请通过ajax发送或使用数据属性。 – 2013-01-06 18:39:06

+0

我上面发布的数据属性示例是否适合您? – 2013-01-06 18:43:09