如何使用动态js变量解析php变量?

时间:2017-03-09 08:57:58

标签: javascript php

我尝试了很多方法,没有结果。我有5个php变量,$menu5var menu_populator = ""; for (var x = 1; x <= count; x++) { menu_populator += '<li><a class="myclass" href="#link">' + '<?php echo $menu' + x + '?>' + '</a></li>'; } $('#nav_menu').html(menu_populator); ,它们评估一个关键字。我试图在javascript中填充这5个php变量并显示它。以下代码不起作用。处理php变量的部分出了什么问题?

{{1}}

2 个答案:

答案 0 :(得分:1)

根据您获取菜单数据服务器端的方式,您可以尝试以下两种方法。一个用于设置$menu变量,但是如果要从数据库获取数据或在循环中创建$menu变量,则可能会更好地找到第二种方法。

  

方法一 - PasteBin

将您的php变量回显到javascript数组中。

var myarray=["<?php echo $menu1;?>","<?php echo $menu2;?>","<?php echo $menu3;?>","<?php echo $menu4;?>","<?php echo $menu5;?>"];
  

方法二 - PasteBin

创建此数组服务器端,如果您在循环中创建当前$menu变量,这将更好,您可以使用array_push()将值推送到数组中。

<?php 
// PHP Array
$menu = array('Home', 'Gallery', 'About');
// How to push new item into array
array_push($menu, 'Contact');
?>

然后只需将此数组回显到您的javascript myarray变量。

var myarray=<?php echo json_encode($menu);?>;

我使用以下javascript来测试这两种方法,两者似乎都运行得很好。我更喜欢第二种方法,但我决定提供这两种方法,因为我不知道你的PHP是什么样的,或者你的$menu变量是如何定义的,所以这应该涵盖两者。

window.onload=function(){
for(var i=0; i<myarray.length; i++){
    var link= document.createElement('a');
    link.href="#";
    link.innerHTML=myarray[i];
    document.body.appendChild(link);
    document.body.appendChild(document.createElement('br'));
}
}

如果您对上述源代码有任何疑问,请在下面留言,我会尽快给您回复。

我希望这有帮助。快乐的编码!

答案 1 :(得分:0)

这样的事情可以解决问题

  - (IBAction)BtnSection_ExpandCollapseAction:(UIButton *)sender {
        sectionselected = sender.tag;   // remember which section is tapped
        if(sender.selected){
            Isopen = FALSE;   // whether to expand or to collapse
            sender.selected = false;
            [sender setImage:[UIImage imageNamed:@"BtnPlus"] forState:UIControlStateNormal];
        }else{
            Isopen = TRUE;
            sender.selected = TRUE;
            [sender setImage:[UIImage imageNamed:@"btnMinus"] forState:UIControlStateNormal];

        }
        [self.tblView reloadData];
    }

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

        UIView *HeaderView = [[UIView alloc] initWithFrame:CGRectMake(5, 5, self.view.frame.size.width-10, 35)];
        HeaderView.backgroundColor = [UIColor lightGrayColor];

        UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(self.view.frame.size.width-80, 5, 50, HeaderView.frame.size.height-10)];
        [btn setImage:[UIImage imageNamed:@"BtnPlus"] forState:UIControlStateNormal];
        [btn addTarget:self
                   action:@selector(BtnSection_ExpandCollapseAction:)
         forControlEvents:UIControlEventTouchUpInside];

        btn.tag = section;
        UILabel *LblHeader = [[UILabel alloc] initWithFrame:CGRectMake(20, 5,HeaderView.frame.size.width-10, HeaderView.frame.size.height-10)];
        if(section == 0){
            LblHeader.text = @"Chief Compalain";
        }else if(section == 1){
            LblHeader.text = @"Extra Oral";
        }else if(section == 2){
            LblHeader.text = @"Intra Oral";
        }else if(section == 3){
            LblHeader.text = @"Radiographical";
        }
        LblHeader.textColor = [UIColor whiteColor];

        [HeaderView addSubview:LblHeader];

        [HeaderView addSubview:btn];

        return HeaderView;
    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        if(Isopen){
            if(section == sectionselected){
                return 7;
            }else{
                return 0;
            }
        }else{
            return 0;
        }

    }


    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

}