Почему я получаю NaN не является допустимым значением ошибки Int32? - PullRequest
0 голосов
/ 04 августа 2011

UPDATE:

Я получаю ту же ошибку. Когда я нажимаю 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, если sticky имеет значение true.

Однако, когда я нажимаю на любой другой 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 ]

2 голосов
/ 04 августа 2011

Синтаксическая ошибка в вашем коде в строке, которая гласит

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>" )
0 голосов
/ 04 августа 2011

У вас одна кавычка после </a> в троичном операторе.

...