在PHP和JavaScript之间交换变量

在PHP和JavaScript之间交换变量,php,javascript,Php,Javascript,所选单选按钮将通过下拉框显示其相应的城市列表。 例如,选中单选按钮“安大略省”时,将显示一个包含匹配城市的下拉框(在本例中,“地区”为安大略省,id为77) 示例中提到的所有PHP函数、循环和JavaScript代码都正常工作: <script type="text/javascript"> $(document).ready(function(){ $('#locationTree input:radio').change(function() { var button

所选单选按钮将通过下拉框显示其相应的城市列表。 例如,选中单选按钮“安大略省”时,将显示一个包含匹配城市的下拉框(在本例中,“地区”为安大略省,id为77)

示例中提到的所有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>  

$(文档).ready(函数(){
$('#locationTree输入:radio')。更改(函数(){
var buttonPressed=$('input:radio[name=Region]:checked').val();
如果(按下按钮==77){
var listCities=$(“选择[name='City']”);
$(“”)。附件(列表城市);
} 
});   
});
为了获得不同地区的城市列表,而不是具体到77个,我可以稍微修改PHP代码,如下所示:

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

由于变量“buttonPressed”检测到“Region”的选定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); ?>
var listcity=$(“选择[name='City']”);
我知道PHP是在服务器端运行的,JavaScript是在客户端运行的,但我认为我在PHP和JavaScript之间交换变量的简单解决方案应该可以工作……但它不起作用。我真的请别人帮我把它做好。

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

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

数据属性示例

通过PHP编写HTML


谢谢你的反馈,你能告诉我为什么我的简单解决方案不起作用吗?重构你的代码,这样你就不用php来编写javascript了。这没有错,但很难读懂。如果您需要服务器端变量,请通过ajax发送它们或使用数据属性。感谢您的帮助,我将尝试理解它,并希望我能够实现它。一旦您将代码分开一点,我认为这将更有意义。在我的例子中,你不明白什么?我知道PHP,一些JavaScript,但我的Ajax知识非常基础。你把我的代码分开是什么意思?我有一个JavaScript变量,我知道它的值(buttonPressed),在代码中在哪里使用它?然后如何将这个值传递给PHP($regionCode)?在我看来,您希望通过运行一些javascript来设置
$regionCode
变量,正如您所说,PHP在服务器上运行,所以当javascript代码运行时,页面已经离开服务器很久了,它并不是这样工作的。您必须使用ajax根据在客户端单击的按钮获取
newInstance()
<div id='universals' data-path='/zz/' data-load='1'></div>
var data_dom = $('#universals')[0],
    key,
    universals = [];
for (key in data_dom.dataset) {
    universals[key] = data_dom.dataset[key];
}