Вызов jQuery .NET webservice, параметр, основанный на значении в ячейке таблицы - PullRequest
0 голосов
/ 14 сентября 2009

У меня есть веб-сервис, который нужно вызвать, и я хочу передать ему параметр на основе значения в ячейке таблицы. Таблица отображается с помощью элемента управления повторителем.

Идея состоит в том, чтобы показать div с данными, возвращаемыми из вызова базы данных, выполняемого веб-службой, когда я наводю указатель мыши на строки таблицы.

Вызов javascript выглядит следующим образом:

$(document).ready(function() {
    $("tr.rows").hover(function() {
        //alert('Test');
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: "{ madvare: '" + $('span#MadLogMadVare').val() + "'}",
            url: "HoverBox.asmx/GetDetails",
            dataType: "json",
            success: function(data) {
                //alert('Success Test');
                var Madvare = data.d;
                $('#DetailsBox').html(
      ('<p><strong>' + Madvare.MadLogMadVare + "</strong><br />"))

            }
        });
    });
});

Вызов никогда не достигнет функции успеха, поэтому я предполагаю, что я неправильно получаю значение из ячейки таблицы ...

Есть идеи, как получить значение из визуализированной ячейки таблицы?

Я решил добавить код Web-сервиса:

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding (ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] открытый класс HoverBox: WebService { публичный HoverBox () { }

private static string _connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

[WebMethod]
public static MadLog GetDetails(string madvare)
{

    MadLog _madlog = new MadLog();
    string query = "SELECT * FROM frisk_madlog WHERE frisk_madlogmadvare = @frisk_madlogmadvare";
    using (SqlConnection conn = new SqlConnection(_connString))
    {
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("frisk_madlogmadvare", madvare);

            conn.Open();
            SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow);

            if (rdr.HasRows)
            {
                while (rdr.Read())
                {
                    _madlog.MadLogID = Convert.ToInt32(rdr["frisk_madlogID"]);
                    _madlog.MadLogUserID = (Guid)(rdr["frisk_madloguserID"]);
                    _madlog.MadLogMadVare = rdr["frisk_madlogmadvare"].ToString();
                    _madlog.MadLogKalorier = (double)(rdr["frisk_madlogkalorier"]);
                    _madlog.MadLogMaengde = (double)(rdr["frisk_madlogmaengde"]);
                    _madlog.MadLogDato = Convert.ToDateTime(rdr["frisk_madlogdato"]);
                    _madlog.MadLogKategori = rdr["frisk_madlogkategori"].ToString();
                }
            }
        }
    }
    return _madlog;
}

}

1 Ответ

1 голос
/ 14 сентября 2009

с первого взгляда

в этой строке:

data: "{ madvare: '" + $('span#MadLogMadVare').val() + "'}",

поставьте пробел в селекторе, чтобы он был таким:

data: "{ madvare: '" + $('span #MadLogMadVare').val() + "'}",

Также попробуйте добавить функции ошибок и тайм-аутов для отладки происходящего:

http://docs.jquery.com/Ajax/jQuery.ajax#options

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...