我有一个生成几个按钮的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
答案 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']
如果你的代码有效,那么这个拼写错误可能不在你的真实剧本中。