从用户控件内部在 Umbraco 中进行 Ajax 调用
对于 Umbraco 项目,我正在尝试进行简单的 Ajax 调用。我无法使用 PageMethods,因为我需要从 UserControl 内部进行调用。 我尝试通过 Web 服务调用来完成此操作,如下所示:
Web 服务方法:
[System.Web.Script.Services.ScriptService]
public class MapService : System.Web.Services.WebService
{
[WebMethod]
public static string GetCities(string ProvinceCode)
{
return "foo";
}
}
我的 ASCX 文件中的 JS 部分:
<script language="javascript" type="text/javascript">
function callServer(src) {
MapService.GetCities(src, displayMessageCallback);
}
function displayMessageCallback(result) {
fillDDL(result);
}
</script>
问题是,“MapService.GetCities”方法没有被调用。
这里可能有什么问题?
或者,有什么更好的方法可以在用户控件中进行此类 Ajax 调用?
For an Umbraco project, I am trying to make a simple Ajax call.. I can't use PageMethods because I need to make the call from inside a UserControl..
I tried to do it via web service call like this:
Web service method:
[System.Web.Script.Services.ScriptService]
public class MapService : System.Web.Services.WebService
{
[WebMethod]
public static string GetCities(string ProvinceCode)
{
return "foo";
}
}
JS part in my ASCX file:
<script language="javascript" type="text/javascript">
function callServer(src) {
MapService.GetCities(src, displayMessageCallback);
}
function displayMessageCallback(result) {
fillDDL(result);
}
</script>
The problem is, "MapService.GetCities" method doesn't get invoked..
What might be the problem here?
Alternatively, what is there any better way to make these kind of Ajax calls in a User Control?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我一直在使用 Umbraco 基础 REST 扩展来处理此类事情。我认为它的实现要简单得多,如果您在服务器上使用 JSON 序列化器,您甚至可以在客户端上拥有适当的 JSON 对象。
I've been usign the Umbraco base REST Extensions for this kind of thing. I think it's a lot simpler to implement and if you use a JSON Serialiser on the server you even have proper JSON objects on the client.
使用REST 方法来执行此操作。我们已经在我们的项目中实施了这一点。为此,您必须编辑 restExtensions.config 并添加您的条目。
Use REST method for doing this. we have implemented this for our projects. For this you have to edit the restExtensions.config and add your entry.
我认为问题可能是用户控件内的 JavaScript 无法与页面中的脚本管理器通信。
我可以看到两种处理这个问题的方法。
1.使用jQuery调用webmethod而不是asp.net ajax。
2.通过控制javascript调用页面javascript中的方法,该方法将调用webmethod,即使用页面作为代理。这样做的另一个优点是使您能够使用页面方法而不是 Web 服务。
I think the problem might be that the javascript inside the usercontrol does not communicate with the scriptmanager in the page.
I can see two ways of dealing with this.
1. Use jQuery to call the webmethod instead of asp.net ajax.
2. through the control javascript call a method in the page javascript which will call the webmethod, i.e. use the page as a proxy. This has the added advantage of enabling you to use a page method instead of a web service.