如何在sitecore中使用jquery ajax和webmethod

时间:2011-09-26 19:18:24

标签: sitecore sitecore6

我正在运行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服务,是否有任何建议?

谢谢, Ť

3 个答案:

答案 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://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2010/10/Sitecore-MVC-Crash-Course.aspx

http://shashankshetty.wordpress.com/2009/03/04/using-jsonresult-with-jquery-in-aspnet-mvc/

MVC控制器中的Json()ActionResult选项使得回送序列化数据非常容易。

答案 2 :(得分:0)

我在“网站”下创建了一个文件夹,并将我的网络服务放在那里。