为什么我得到NaN不是Int32错误的有效值?

时间:2011-08-04 15:27:54

标签: c# javascript jquery .net-3.5 asmx

更新:

我收到同样的错误。当我点击x时,它应该返回{id:23},但它会返回{id: NaN}。如果我删除三元运算符,这个问题就会自行纠正。


我对我的网页进行了更改:

就是这样:

$( "#notifications" ).prepend( "<div class='notification' id='n" + notifications.d[i].id + "'><span class='notification_text'>" + notifications.d[i].text + "</span><a href='#' class='notification_button' id='b" + notifications.d[i].id + "' value='x'>x</a></div>" ).show();

我将其更改为此,根据notifications.d[i].sticky的值添加了三元条件:

$( "#notifications" ).prepend( "<div class='notification' id='n" + notifications.d[i].id + "'><span class='notification_text'>" + notifications.d[i].text + "</span>" + ( notifications.d[i].sticky ? "" : "<a href='#' class='notification_button' id='b'" + notifications.d[i].id + "' value='x'>x</a>'" ) + "</div>" ).show();

该部分工作正常,如果粘性为真,则不会创建x链接。

但是,当我点击任何其他x时,我收到服务器端错误消息:

NaN is not a valid value of Int32

服务器端代码如下所示:

[WebMethod()]
public int CloseNotification(int id) {
    using (connection = new SqlConnection(ConfigurationManager.AppSettings["connString"])) {
        using (command = new SqlCommand("update notifications set closed_by = @user where id = @id", connection)) {
            command.Parameters.Add("@id", SqlDbType.Int, 4).Value = id;
            command.Parameters.Add("@user", SqlDbType.VarChar, 4).Value = "abc";

            connection.Open();
            intAffectedRows = command.ExecuteNonQuery();
            connection.Close();
        }
    }

    return intAffectedRows;
}

任何人都知道我为什么会收到这个错误?

我认为我在三元组中犯了一个错误,可能是双重或单引号错误,但我看不到它。

2 个答案:

答案 0 :(得分:2)

您的代码中的行语法错误为

id='b'" + notifications.d[i].id + "' value='x'>x</a>'" ) + "</div>" ).show();

'之后还有一个b。它应该是:

id='b" + notifications.d[i].id + "' value='x'>x</a>'" ) + "</div>" ).show();

修改

在三元操作结束时,您还需要额外'

( notifications.d[i].sticky ? "" : "<a href='#' class='notification_button' id='b" + notifications.d[i].id + "' value='x'>x</a>'" )

应该是:

( notifications.d[i].sticky ? "" : "<a href='#' class='notification_button' id='b" + notifications.d[i].id + "' value='x'>x</a>" )

答案 1 :(得分:0)

在三元运算符中</a>之后有一个单引号。