我正在运行Sitecore 6.4并尝试使用Sitecore中的ajax和webmethod获取一些数据。一切都在子布局中(用户控制)
这是调用webmethod的代码:
$("#NextBanner").click(function () {
$.ajax({
type: "POST",
url: "/GetNext",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert('success');
},
error: function (err) {
alert('error');
}
});
这是webmethod,返回一个字符串:
[WebMethod]
public static string GetNext()
{
return "Hello";
}
在没有使用Sitecore的测试项目中,我使用“Default.aspx / GetNext”作为ajax调用的url,但现在显然这不起作用,因为url我得到404 not found错误。
网址应该是什么?子布局路径为:/layouts/sublayouts/test.ascx
有关实现此目标的不同方法的任何建议吗?
谢谢, Ť
更新
感谢大家的回答。
我最终在website / sitecore / shell / webservices下创建了一个Web服务,不确定这是否适合放置Web服务,是否有任何建议?
谢谢, Ť
答案 0 :(得分:1)
将代码放在WebForm中。您不能像页面一样调用子布局。通过ajax调用中的文件系统路径引用文件,例如/layouts/ajaxProcessor.aspx
您还应该查看以下有关sitecore和ajax善良的博文:http://blog.velir.com/index.php/2011/09/22/lazy-websites/
答案 1 :(得分:0)
我们通常使用ASP.NET MVC控制器来提供Sitecore项目中的JSON数据,而不是使用Web方法。正确设置,您可以访问一些Sitecore.Context值(只是非Item)和所有Sitecore数据访问API。
http://shashankshetty.wordpress.com/2009/03/04/using-jsonresult-with-jquery-in-aspnet-mvc/
MVC控制器中的Json()ActionResult选项使得回送序列化数据非常容易。
答案 2 :(得分:0)
我在“网站”下创建了一个文件夹,并将我的网络服务放在那里。