这是我的web service
方法。
LogGeneralIncidentForm.aspx.cs:
public static List<SelectUsers> GetUsers()
{
DataTable dtUsers = SLAFacadeBLL.GetGIMUsers(Constants.GIM_USER_ACTIONS.CANLOG);
var items = new List<SelectUsers>();
DataView dvUsers = dtUsers.DefaultView;
dvUsers.RowFilter = "RESPOND = True";
if (dvUsers.Count > 0)
{
DataTable dt = dvUsers.ToTable();
foreach (DataRow row in dt.Rows)
{
items.Add(new SelectUsers { Value = row["Id"].ToString(), Text = row["Name"].ToString() });
}
}
return items;
}
这是我的jquery
<script type="text/javascript">
$(function() {
var items;
$.ajax({
type: "POST",
url: "LogGeneralIncidentForm.aspx/GetUsers",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
items = msg.d;
}
});
$('#myCheckList').checkList({
listItems: items,
onChange: selChange
});
function selChange(){
var selection = $('#myCheckList').checkList('getSelection');
$('#selectedItems').text(JSON.stringify(selection));
}
});
</script>
但我没有在jquery方法中获取用户列表。我的web方法工作正常。怎么做?我的代码有什么问题?任何人都可以给我任何建议吗?
答案 0 :(得分:1)
下面的代码将根据您的要求在同一个域中工作..
在网页上
<asp:TextBox ID="txt_name" runat="server"></asp:TextBox>
<asp:Button ID="call_service" runat="server" Text="Call Service" OnClientClick="CallService(); return false;" />
<asp:Label ID="lblMsg" runat="server" Text="" />
<script type="text/javascript">
function CallWebService() {
$.ajax({
type: "POST",
url: "http://......myurl..../WebService.asmx",
data: "{'name':'" + $("#txt_name").val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: ShowData,
error: error
});
}
function ShowData(data, status) {
$("#lblMsg").html(data.d);
}
function error(request, status) {
alert(request.statusText);
}
</script>
答案 1 :(得分:0)
您的问题中缺少某些内容,您忘记提及您使用的是jquery.ui.checkList.js
。
我已经看过这个的源代码,它希望传入的值被命名为value和text:
_addItem: function(listItem){
var self = this, o = self.options, el = self.element;
var itemId = 'itm' + (o.icount++); // generate item id
var itm = $('<tr/>');
var chk = $('<input/>').attr('type','checkbox').attr('id',itemId)
.addClass('chk')
.attr('data-text',listItem.text)
.attr('data-value',listItem.value);
itm.append($('<td/>').append(chk));
var label = $('<label/>').attr('for',itemId).text(listItem.text);
itm.append($('<td/>').append(label));
o.objTable.append(itm);
// bind selection-change
el.delegate('.chk','click', function(){self._selChange()});
}
您需要更改SelectUsers
课程,以便通过将Id
重命名为value
并将Name
重命名为text
来反映这一点。
<强>更新强>
在json中使用名称和文本的jsFiddle。
答案 2 :(得分:0)
我可能有很多理由,请查看这篇精彩的文章。 http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods
我甚至怀疑这些可能是原因:
缺少[WebMethod]属性
[WebMethod]
public static List<SelectUsers> GetUsers()
{
}
在ScriptManager中启用了页面方法
<asp:ScriptManager ID="scm" runat="server" EnablePageMethods="true" />
答案 3 :(得分:0)
请参阅以下工作示例
//代码隐藏方法声明为静态
[WebMethod]
public static string GetSquare(String value)
{
return value;
}
您点击此按钮的按钮
<input type="button" id="button" value="Chnageurl" onclick="ajaxcall()" />
这个
的脚本<script type="text/jscript">
function ajaxcall(e) {
$.ajax({
type: "POST",
url: "Default.aspx/GetSquare",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ value: "Vinay" }),
dataType: "json",
success: function (value) {
alert(value.d);
},
error: function () { alert("Ajax Error"); }
});
};