将php变量传递给javascript函数

时间:2016-12-15 15:20:17

标签: javascript php parameters

我有一个生成几个按钮的php循环。每个按钮更改特定div的内容并使用ajax请求更新数据库中的一些内容。当单击该按钮时,它会调用执行ajax请求的函数。问题是,如果我将字符串连接起来,我就无法将Div id作为参数传递给函数。只有当我写$ TickCrossDiv = $ i它才有效(只有当使用数字作为Div ID时才有效)。

这是我的代码:

for($i=0;$i<count($PlanningArray);$i++){

        $TickCrossDiv = 'tickCrossDiv'.$i;

     echo "<button onclick=\"SetActDone(
        ".$PlanningArray[$i]'PlanID'].",
        ".$PlanningArray[$i]['ActID'].",
        ".$TickCrossDiv.")\" >
        Mark as done</button>"
}

这是功能:

function SetActDone(PlanID,ActID,DivID)
    {
        $.ajax({

            type: "POST",
            url: 'testAjax.php',
            data: {PlanID:PlanID, ActID:ActID},
            success: function(data) {

                $("#" + DivID ).html('<p>Status: Done</p> <i style="color:greenyellow; " class="fa fa-check-circle fa-2x"></i>');
            }
        });
    }

我收到错误:

未捕获错误:语法错误,无法识别的表达式:#object HTMLDivElement

1 个答案:

答案 0 :(得分:1)

在不知道$PlanningArray[$i][...]的价值是什么的情况下,我无法肯定地说出来。但很可能你需要将echoed变量包装在引号中。这可以解释为什么一个数字可以工作,它将被视为整数而不是字符串。试试这个:

for($i=0;$i<count($PlanningArray);$i++){

    $TickCrossDiv = 'tickCrossDiv'.$i;

     echo "<button onclick=\"SetActDone(
        ".$PlanningArray[$i]['PlanID'].",
        ".$PlanningArray[$i]['ActID'].",
        '".$TickCrossDiv."')\" >
        Mark as done</button>"

}

我猜测$PlanningArray[$i]['PlanID']$PlanningArray[$i]['ActID']也是整数,所以他们不需要用引号括起来。

我还在这一行修正了一个拼写错误:

$PlanningArray[$i]'PlanID']

如果你的代码有效,那么这个拼写错误可能不在你的真实剧本中。