我在使用PHP和Javascript传递函数内部的任何字母数字值时遇到一个错误。
错误:
category.php:235 Uncaught SyntaxError: missing ) after argument list
我在下面解释我的代码。
<?php
foreach ($listdata as $v) {
$id = '15rf67';
$edit = 1;
$del = 0;
echo "<tr>
<td>" . $counter++ . "</td>
<td>" . $v['cat_title'] . "</td>
<td>
<select class='form-control' id='status1' name='status1' style='height:23px; padding:0px;'>
<option value=''>Select Status</option>
<option value='1' " . ($v['status'] == '1' ? 'selected' : '') . ">Enable</option>
<option value='0' " . ($v['status'] == '0' ? 'selected' : '') . ">Disable</option>
</select>
</td>
<td>
<img src='uploads/" . $v['image'] . "' name='pro' border='0' style='width:50px; height:50px; border:#808080 1px solid;' />
</td>
<td>
" . $v['cat_description'] . "
</td>
<td>
<button type='button' class='btn btn-xs btn-green outlinedivnone' data-placement='top' title='' data-original-title='Edit' onClick='javascript:changeOfActionMenu($id,$edit)'><i class='fa fa-pencil'></i> </button>
<button type='button' class='btn btn-xs btn-danger outlinedivnone' data-placement='top' title='' data-original-title='Delete' onClick='javascript:changeOfActionMenu($id,$del)'><i class='fa fa-times'></i> </button>
</td>
</tr>";
}
?>
在这里,我得到了这个<button type='button' class='btn btn-xs btn-green outlinedivnone' data-placement='top' title='' data-original-title='Edit' onClick='javascript:changeOfActionMenu($id,$edit)'><i class='fa fa-pencil'></i> </button>
行中的错误。当我设置像1,2..
这样的$id值时,这个错误不会出现,但我需要传递像15rf67
这样的字母数字值。请帮助我。
您必须将报价放在$id周围,类似于
<button type='button' class='btn btn-xs btn-green outlinedivnone' data-placement='top' title='' data-original-title='Edit' onClick='javascript:changeOfActionMenu('"".$id."'",$edit)'><i class='fa fa-pencil'></i> </button>
<button type='button' class='btn btn-xs btn-danger outlinedivnone' data-placement='top' title='' data-original-title='Delete' onClick='javascript:changeOfActionMenu('"".$id."'",$del)'><i class='fa fa-times'></i> </button>
我想您错过了按钮函数参数的引号。引用alpa或字母数字值很重要。我正在写你的代码,里面有正确的报价。
<?php
foreach ($listdata as $v) {
$id = '15rf67';
$edit = 1;
$del = 0;
echo "<tr>
<td>" . $counter++ . "</td>
<td>" . $v['cat_title'] . "</td>
<td>
<select class='form-control' id='status1' name='status1' style='height:23px; padding:0px;'>
<option value=''>Select Status</option>
<option value='1' " . ($v['status'] == '1' ? 'selected' : '') . ">Enable</option>
<option value='0' " . ($v['status'] == '0' ? 'selected' : '') . ">Disable</option>
</select>
</td>
<td>
<img src='uploads/" . $v['image'] . "' name='pro' border='0' style='width:50px; height:50px; border:#808080 1px solid;' />
</td>
<td>
" . $v['cat_description'] . "
</td>
<td>
<button type='button' class='btn btn-xs btn-green outlinedivnone' data-placement='top' title='' data-original-title='Edit' onClick='javascript:changeOfActionMenu('"$id'",$edit)'><i class='fa fa-pencil'></i> </button>
<button type='button' class='btn btn-xs btn-danger outlinedivnone' data-placement='top' title='' data-original-title='Delete' onClick='javascript:changeOfActionMenu('"$id'",$del)'><i class='fa fa-times'></i> </button>
</td>
</tr>";
}
如果您的$id
变量是字符串,那么您也必须将其作为Javascript中的字符串处理。使用类似的东西:
onClick='javascript:changeOfActionMenu('"$id'",$edit)'
请忽略所有告诉你只需要引号的答案——毕竟,如果有一天你决定ID应该包含撇号怎么办?一切都坏了!
相反,这里有一种替代方法:
<button type='button' class='btn btn-xs btn-danger outlinedivnone'
data-placement='top' title='' data-original-title='Delete'
data-id='".htmlspecialchars($id)."'
data-action='".htmlspecialchars($del)."'
onclick='changeOfActionMenu(this)'
><i class='fa fa-times'></i> </button>
您的changeOfActionMenu
功能可以这样调整:
function changeOfActionMenu(btn) {
var id = btn.getAttribute("data-id"),
action = btn.getAttribute("data-action");
// do stuff
}
这要灵活得多,除其他外,还将允许您委派事件处理程序并停止使用内联处理程序——这两件事都是您应该做的;)
<button type='button' class='btn btn-xs btn-green outlinedivnone' data-placement='top' title='' data-original-title='Edit' onClick='javascript:changeOfActionMenu($id,$edit)'><i class='fa fa-pencil'></i> </button>
<button type='button' class='btn btn-xs btn-danger outlinedivnone' data-placement='top' title='' data-original-title='Delete' onClick='javascript:changeOfActionMenu($id,$del)'><i class='fa fa-times'></i> </button>
应该是
<button type='button' class='btn btn-xs btn-green outlinedivnone' data-placement='top' title='' data-original-title='Edit' onClick='javascript:changeOfActionMenu('"$id'",$edit)'><i class='fa fa-pencil'></i> </button>
<button type='button' class='btn btn-xs btn-danger outlinedivnone' data-placement='top' title='' data-original-title='Delete' onClick='javascript:changeOfActionMenu('"$id'",$del)'><i class='fa fa-times'></i> </button>
"<button type='button' class='btn btn-xs btn-green outlinedivnone' data-placement='top' title='' data-original-title='Edit' onClick='javascript:changeOfActionMenu($id,$edit)'><i class='fa fa-pencil'></i> </button>";
onClick='javascript:changeOfActionMenu($id,$edit)'
应为onClick='javascript:changeOfActionMenu('"$id'",$edit)'
,因为$id是字母数字(字符串),所以需要为javascript函数字符串param添加""
。