“语法错误:意外的令牌)”在 javascript 调用中,当 eval(value) 为空时

"SyntaxError: Unexpected token )" in javascript call when eval(value) is null?

本文关键字:eval value 调用 语法错误 错误 语法 意外 令牌 javascript      更新时间:2023-09-26

我在OnClientClick中有一个javascript调用,如下所示:

OnClientClick='<%# "return DisplayAlert(" + Eval("BedNum") + "," + Eval("ClientId") + ");" %>'

这是我的javascript函数:

    function DisplayAlert(bed, clientid) {
        if (clientid == null) {
            alert('value is null 1st if');
        }
        if (clientid === null) {
            alert('value is null 4th If');
        }
        if (clientid !== null) {
            alert(clientid);
        }
        return false;
    }

ClientId始终为 null 或具有有效值。当ClientId具有有效值时,将显示alert。所以没关系。

但是,当ClientId为空时,不会显示alert,控制台会显示Uncaught SyntaxError: Unexpected token )

我认为当 clientid 为 null 时,javascript 函数调用的格式不正确,这就是我收到此错误的原因。但我不知道如何解决它。我总是可以用更易于管理的值替换 null,但如果别无选择,我会这样做。

任何帮助,不胜感激。

问题来自函数调用的构造。当客户端 ID 为空时...

这: <%# "return DisplayAlert(" + Eval("BedNum") + "," + Eval("ClientId") + ");" %>
产生这个: return DisplayAlert(value, ); 注意空格

直接在 JS "DisplayAlert(value, null);" 中尝试您的函数,您的前 2 个警报将显示

也就是说,最好在创建函数调用之前将 null 更改为更易于管理的值。

由于我只需要知道客户端 id 是否为空,所以我最终检查了客户端 id 的长度,而不是实际值。在javascript函数中,我检查它是否为0:

OnClientClick='<%# "return ShowRoom(" + Eval("BedNum") + "," + Eval("ClientId").ToString().Length + ");" %>'

和JavaScript函数:

<script type="text/javascript">
    function ShowRoom(bed, clientid) {
        if (clientid == 0) {
            //clientid is null. Do something.
        } else if (clientid > 0)
        {
            //clientid is not null. Do something else.                
        }
        return false;
    }
</script>