我正在尝试使用jQuery ajax在我的应用程序中的aspx页面上调用WebMethod。我正在关注这篇文章:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
我注意到当我尝试进行ajax调用时,它给了我页面本身(myPage.aspx),而不是我的WebMethod的结果。在这一点上,我基本上直接使用上面的文章中的代码。 javascript是:
$(document).ready(function () {
// Add the page method call as an onclick handler for the div.
$("#Result").click(function () {
$.ajax({
type: "POST",
url: "myPage.aspx/GetDate",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
$("#Result").text(msg.d);
}
});
});
});
WebMethod的myPage.aspx代码隐藏是:
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
奇怪的是,我让它在一个单独的测试页面上工作,但是当我尝试将它集成到我想要使用它的实际页面时,它却没有。在搜索网站和网页时,我找不到能解决我问题的任何内容。
我正在运行Sitecore 6.5和.NET Framework 4.0版。任何人都可以帮助或提供见解吗?
答案 0 :(得分:0)
我只熟悉PHP,但通常你必须在返回之前使用json_encode()你的数组。例如在php
中$TestArray['d'] = "All My HTML";
echo json_encode($TestArray);
//Then in Jquery
$("#Result").html(msg.d);
并确保有一个id为Result的div ...
答案 1 :(得分:0)
通常,当请求不是POST或没有设置application/json
Content-Type时,会发生这种情况。
我不熟悉Sitecore,但其他人似乎在干扰页面方法方面遇到了麻烦:How to use jquery ajax and webmethod with sitecore
答案 2 :(得分:-1)
我认为问题在于Sitecore的URL重写器将处理请求并忽略您网址的/GetDate
部分。
因此,您必须将您的aspx添加到<setting name="IgnoreUrlPrefixes" />
设置。