使用参数调用 jQuery 中的 Web 方法
Call Webmethod in jQuery with Parameter
我有一个 webMethod 接受来自服务器会话用户 ID 会话的参数
[WebMethod]
public void getNotificationList(string userID)
{
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(t.std_notification_get_list(int.Parse(userID))));
}
}
我想从 jQuery 脚本调用此 Web 方法并将数据填充到 HTML 表格
<table id="data-table-combine" class="table table-striped table-bordered">
<thead>
<tr>
<th class="text-nowrap">Message</th>
<th class="text-nowrap">User From</th>
<th class="text-nowrap">User To</th>
<th class="text-nowrap">Date</th>
<th class="text-nowrap">Action</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
脚本是:
<script>
$(document).ready(function () {
showTableData();
//$('#submit').click(function () {
// showTableData();
// var var_name = ('#name');
// alert(var_name.valueOf());
//});
});
var showTableData = function ()
{
var sValue = '<%=HttpContext.Current.Session["userID"]%>';
$.ajax({
dataType: "json",
method: "post",
url: 'UserService.asmx/getNotificationList',
data: JSON.stringify({ userID: sValue }),
success: function (response) {
var userTable = $('#data-table-combine tbody');
userTable.empty();
$(response).each(function (index, duser) {
alert("UserID : " + sValue + ", Message: " + duser.Message);
var var_message = (duser.Message == null) ? '' : duser.Message;
var var_user_from = (duser.User_From == null) ? '' : duser.User_From;
var var_user_to = (duser.User_To == null) ? '' : duser.User_To;
var var_action = (duser.Action == null) ? '' : duser.Action;
var var_date = (duser.Date == null) ? '' : duser.Date;
userTable.append('<tr class="gradeA"><td>' +
var_Message + '</td><td>' + var_user_from + '</td><td>' + var_user_to +
'</td><td>' + var_action + '</td><td>' + var_date + '</td></tr>');
});
},
error: function (err) {
//alert(err);
}
});
};
而当脚本 运行 时,table 不包含任何值。
那么问题出在哪里??
以及如何将参数传递给 jQuery 中的 webMethod ?
尝试使用它们...
data: "{userID:" + JSON.stringify(sValue) + "}",
或使用不同的方式
在ajax调用
之前声明它们
var data = { userID: sValue };
var json_data = JSON.stringify(data);
在ajax
中使用它
data: json_data,
有几个想法可以尝试:
尝试在 url 前面添加斜杠,以便它查找从根目录开始的服务:
url: '/UserService.asmx/getNotificationList',
也尝试添加 contentType:
contentType: "application/json; charset=utf-8",
编辑:
您正在使用序列化程序,因此 return 一个字符串。确保你的方法是 static.
[WebMethod]
public static string getNotificationList(string userID)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Serialize(t.std_notification_get_list(int.Parse(userID))));
}
关于从 Web 方法 returning json 了解的重要一点是响应是一个包装器。您的实际数据在对象 d
.
中
$(response.d).each(
但是,你已经return编辑了一个JSON字符串,所以要访问数据作为对象,您必须将其重新转换为对象:
var myData = JSON.parse(response.d);
那么你可以做到
$(myData).each(
根据您的数据结构,您可能需要进行一些调整,例如 myData[0].duser
或 myData[0].Message
。
我有一个 webMethod 接受来自服务器会话用户 ID 会话的参数
[WebMethod]
public void getNotificationList(string userID)
{
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(t.std_notification_get_list(int.Parse(userID))));
}
}
我想从 jQuery 脚本调用此 Web 方法并将数据填充到 HTML 表格
<table id="data-table-combine" class="table table-striped table-bordered">
<thead>
<tr>
<th class="text-nowrap">Message</th>
<th class="text-nowrap">User From</th>
<th class="text-nowrap">User To</th>
<th class="text-nowrap">Date</th>
<th class="text-nowrap">Action</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
脚本是:
<script>
$(document).ready(function () {
showTableData();
//$('#submit').click(function () {
// showTableData();
// var var_name = ('#name');
// alert(var_name.valueOf());
//});
});
var showTableData = function ()
{
var sValue = '<%=HttpContext.Current.Session["userID"]%>';
$.ajax({
dataType: "json",
method: "post",
url: 'UserService.asmx/getNotificationList',
data: JSON.stringify({ userID: sValue }),
success: function (response) {
var userTable = $('#data-table-combine tbody');
userTable.empty();
$(response).each(function (index, duser) {
alert("UserID : " + sValue + ", Message: " + duser.Message);
var var_message = (duser.Message == null) ? '' : duser.Message;
var var_user_from = (duser.User_From == null) ? '' : duser.User_From;
var var_user_to = (duser.User_To == null) ? '' : duser.User_To;
var var_action = (duser.Action == null) ? '' : duser.Action;
var var_date = (duser.Date == null) ? '' : duser.Date;
userTable.append('<tr class="gradeA"><td>' +
var_Message + '</td><td>' + var_user_from + '</td><td>' + var_user_to +
'</td><td>' + var_action + '</td><td>' + var_date + '</td></tr>');
});
},
error: function (err) {
//alert(err);
}
});
};
而当脚本 运行 时,table 不包含任何值。 那么问题出在哪里?? 以及如何将参数传递给 jQuery 中的 webMethod ?
尝试使用它们...
data: "{userID:" + JSON.stringify(sValue) + "}",
或使用不同的方式
在ajax调用
之前声明它们var data = { userID: sValue };
var json_data = JSON.stringify(data);
在ajax
中使用它data: json_data,
有几个想法可以尝试:
尝试在 url 前面添加斜杠,以便它查找从根目录开始的服务:
url: '/UserService.asmx/getNotificationList',
也尝试添加 contentType:
contentType: "application/json; charset=utf-8",
编辑:
您正在使用序列化程序,因此 return 一个字符串。确保你的方法是 static.
[WebMethod]
public static string getNotificationList(string userID)
{
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Serialize(t.std_notification_get_list(int.Parse(userID))));
}
关于从 Web 方法 returning json 了解的重要一点是响应是一个包装器。您的实际数据在对象 d
.
$(response.d).each(
但是,你已经return编辑了一个JSON字符串,所以要访问数据作为对象,您必须将其重新转换为对象:
var myData = JSON.parse(response.d);
那么你可以做到
$(myData).each(
根据您的数据结构,您可能需要进行一些调整,例如 myData[0].duser
或 myData[0].Message
。