【问题标题】:Passing php variable to javascript function将php变量传递给javascript函数
【发布时间】:2016-12-15 15:20:17
【问题描述】:

我有一个生成多个按钮的 php 循环。每个按钮通过使用 ajax 请求更改特定 div 的内容并更新数据库中的一些内容。当单击按钮时,它会调用一个执行 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

【问题讨论】:

    标签: javascript php parameters


    【解决方案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']
    

    如果您的代码有效,则该错字可能不在您的真实脚本中。

    【讨论】:

    • 非常感谢!!!它现在可以工作了,我将 $TickCrossDiv 用引号括起来,是的 $PlanningArray[$i]['PlanID'] 和 $PlanningArray[$i]['ActID'] 是整数
    猜你喜欢
    • 2015-06-08
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 2015-05-02
    • 2015-12-17
    相关资源
    最近更新 更多