我只需要在页面加载完成后运行一个方法。
这是我正在使用的js:
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
type: "GET",
url: document.URL + "/LoadAssignees"
});
});
</script>
这是我试图运行的方法:
[WebMethod()]
protected void LoadAssignees()
{
//load assignees
var sw = Stopwatch.StartNew();
sw.Start();
cboAssignees.DataSource = Uti.GetAssigneeList(_currentUser, 1, false);
sw.Stop();
cboAssignees.DataTextField = "Name";
cboAssignees.DataValueField = "Guid";
cboAssignees.DataBind();
Response.Write(string.Format("Assignee load time: {0}", sw.ElapsedMilliseconds));
}
我觉得我做得对。我没有收到任何错误,但什么也没发生。我在方法上设置了一个断点,它没有被击中,所以我猜我的ajax调用是不正确的。我错过了什么?
另一方面,我正在尝试做的是在页面完成渲染后异步运行一个方法。如果你能提出一个更好的方法来实现这一点,那对我也有用:)谢谢。
答案 0 :(得分:1)
Sinaesthetic,
您需要在$.ajax()
函数调用中处理响应。在您的情况下,我将使用您在jquery.com上的jQuery.ajax()
描述中描述的“success”参数。
这是因为你的代码中的Response.Write方法不会写回你调用它的页面,而是回写到ajax函数本身。如果没有处理该回复,则什么也得不到。
所以,例如:
$.ajax({
type: "GET",
url: document.URL + "/LoadAssignees",
success: function(data) {
alert(data);
}
});
修改强> 的
您也可以尝试使用其他方法在Ajax调用中为您的Web方法设置URL:如果您的网页的网址为http://mydomain.com/dir1/pagex.aspx
,那么您的ajax将尝试联系http://mydomain.com/dir1/pagex.aspx/LoadAssignees
希望有所帮助!
答案 1 :(得分:1)
是的,看起来你的访问修饰符限制太多了:
具有此属性集的类中的方法称为XML Web 服务方式。方法和类必须是公共的并且正在运行 在ASP.NET Web应用程序中。
这是来自“备注”部分:http://msdn.microsoft.com/en-us/library/system.web.services.webmethodattribute.aspx