Jquery AJAX不会调用代码隐藏方法

时间:2013-09-01 10:58:38

标签: asp.net jquery webforms dotnetnuke

我试图通过jquery.ajax从代码后面调用方法...但没有任何反应,没有错误只是没有调用。 也许重要的是要注意我使用DotNetNuke jQuery(document).ready(function(){

    jQuery(window).scroll(function () {
        if (jQuery(window).scrollTop() == jQuery(document).height() - jQuery(window).height()) {
            InfiniteScroll();
        }
    });

function InfiniteScroll() {
        jQuery.ajax({
            type: "POST",
            url: "LoadItemsHandler.aspx/GetData",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data != "") {
                    alert('comething happened! :)');                    
                }
            }
        })
    };

我尝试将处理程序方法添加到 .ascx .aspx 但没有效果:

[WebMethod]
        public static string GetData()
        {
            return "<div><h2>I am comming in peace from code behind.</h2><p>Lorem ipsum dolor sit amet ... :)</p></div>";
...

我试图将alert()放在InfiniteScroll()中,并在滚动时调用它,但后台方法......没有:(


更新1

public string Test(string input)
{
    var serializer = new JavaScriptSerializer();
    return serializer.Serialize(new { Name = input });
}
public static string GetData()
        {
            string json = Test("Mike");
            return json;
}

我得到了:

Error:SyntaxError: JSON.parse: unexpected character



更新2

好的,我明白了。 从后面的代码我回来:

var serializer = new JavaScriptSerializer();
            return serializer.Serialize(new { NewTotal = "777", OfType = "love" });

关于ajax呼叫成功,我有:

success: function (data) {
                if (data != "") {
                    alert(data.d);
...

现在这个以下数据:

{"NewTotal":"777", "OfType":"love"}

现在我唯一的问题是如何获得NewTotalOfType值,因为当我使用data.NewTotal时,我得到undefined

3 个答案:

答案 0 :(得分:2)

您不需要将结果转换为JSON,它是自动的。序列化为JSON

 [WebMethod()]
    public static object GetData()
    {
        return (new { NewTotal = "777", OfType = "love" });
    }

在JS上,请参阅newTotal,如下所示

data.d.NewTotal

答案 1 :(得分:0)

首先,在UserControl中调用Page方法不起作用,因此应该在aspx页面中定义它们。

其次,检查萤火虫中的错误。

另外,请确保您从同一页面打电话。

第三,使用网络服务(* .asmx)

答案 2 :(得分:0)

可以使用库using Newtonsoft.Json;

JsonConvert.SerializeObject(Request["paramater"])