0

我正在使用一个评估培训活动的 jquery 库。基本上这里是对培训日期进行评分的客户端代码:

$('#rateItYours').bind('rated reset', function (e) {
                var ri = $(this);
                var value = ri.rateit('value');
                var trainingID = $("#MainContent_hlTrainingDateID").text();

                //maybe we want to disable voting? ri.rateit('readonly', true);

                $.ajax({
                url: 'RateIt.aspx', //your server side script
                data: { id: trainingID, value: value }, //our data
                type: 'POST',
                success: function (data) {
                $('#response').append('<li>' + data + '</li>');
                },
                error: function (jxhr, msg, err) {
                $('#response').append('<li style="color:red">' + msg + '</li>');
                }
                });
            });

所以我很容易使用以下方法获得评级的价值:

var value = ri.rateit('value');

而且我还有培训日期所需的数据库 ID:

var trainingID = $("#MainContent_hlTrainingDateID").text();

所以我可以同时提醒valuetrainingID。我的问题是我从来没有写过任何可以ajax()打电话的东西。所以我看到它通过了 url RateIt.aspx,所以我创建了一个名为 RateIt.aspx 的新网络表单。到目前为止一切都很好......但是这个 RateIt.aspx 的代码应该如何拦截trainingIDand value,如此处所述:

data: { id: trainingID, value: value }, //our data

所以我正在使用 chrome 开发人员工具,我看到在我添加 RateIt.aspx 之前它失败了,说它找不到这个资源。因此,一旦我创建了 RateIt.aspx,chrome 就没有报告错误,但问题是我想了解这个 ajax 调用以及如何编写 RateIt.aspx。data从线中获取这些值会是什么样子。

有人可以解释一下 RateIt.aspx 的外观并提供指导吗?也许显示实际获取这些值并警告它们的代码(最好在 C# 中)或某种模拟代码以查看我是否获得了正确的值?对不起菜鸟问题。

4

2 回答 2

2

基于,在您的 RateIt.aspx 页面代码隐藏中创建一个 updateRating 方法

[WebMethod]
public static string updateRating(string id, string value)
{
   // do something with the parameters

}

并在您的 ajax 方法中显式调用它

url: 'RateIt.aspx/updateRating', //your server side script
于 2013-01-22T17:01:39.753 回答
0

您可以使用此代码获取它

var data = Context.Request["data"];

然后取决于你的json格式

var js = new System.Web.Script.Serialization.JavaScriptSerializer();
var obj = js.Deserialize<Dictionary<string,string>>(data); // or int or object for second argument depending on your data

然后字典将包含 2 项,一项具有键 id,一项具有键值,每个项都包含提供的值之一。

于 2013-01-22T15:44:35.010 回答