为什么我得到的NaN不是Int32错误的有效值
本文关键字:Int32 错误 有效值 不是 NaN 为什么 | 更新日期: 2023-09-27 18:04:26
更新:
我也犯了同样的错误。当我点击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();
该部分工作正常,如果stick为true,则不会创建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;
}
有人知道我为什么会犯那个错误吗?
我想我在三元部分犯了一个错误,可能是双引号或单引号的错误,但我看不出来。
您的代码中读取的行出现语法错误
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>" )
在三元运算符的</a>
后面有一个单引号。