使用PHP和Javascript在函数内部传递alphaneumeric值作为参数时出错


Getting error while passing alphaneumeric value as parameter inside function using PHP and Javascript

我在使用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添加""