来自网页的消息未定义

时间:2011-01-31 07:41:18

标签: asp.net jquery webforms

我将一个简单的字符串从webmethod返回到Javascript函数。

我在ASP.NET 2.0中使用支持AJAX的网站。我在firefox中获取日期,但在IE 8中它返回undefined

我是否必须使用某些序列化类来解析JSON格式的字符串?在我的网络方法中,我只是使用:

    return DateTime.Now.ToString();

 $(document).ready(function(){
     var pageUrl = '<%=ResolveUrl("~/test/test.aspx")%>';

        // Test
        $('#<%=trgNo.ClientID%>').change(function(){
            var trgId = $(this+'input:checked').val();

            $.ajax({
                type: "POST",
                url : pageUrl+ '/getDet',
                data : '{categ: "' +trgId + '"}',
                contentType:"application/json; charset=utf-8",
                dataType:"json",
                success:OnSuccess,
                failure: function(msg){
                    if(msg.hasOwnProperty("d"))
                        alert(msg.d);   
                    else
                        alert('error fetching values from database');
                   }
                });
        });

        function OnSuccess(msg)
        {
        if(msg.hasOwnProperty("d"))
            alert(msg.d);
        else
            alert(msg);
        }
});

修改 似乎成功函数解决的问题是响应'alert(msg)'在firefox中有效但在IE 8中没有用asp.net 2.0

1 个答案:

答案 0 :(得分:0)

也许你不想使用它,但我对asp net ajax build in function非常满意,因为它构建了一个标头,可以在浏览器上正常工作。

$(document).ready(function(){
     var pageUrl = '<%=ResolveUrl("~/test/test.aspx")%>';

        // Test
        $('#<%=trgNo.ClientID%>').change(function(){
            var trgId = $(this+'input:checked').val();

            var proxy = Sys.Net.WebServiceProxy;
            proxy.invoke("",                // if current page "", if webservice "/srv.asmx"
                         "getDet",              //method name
                         false,                 //post = true, get = false 
                         { categ : trgId },     //javascript object
                         OnSuccess,             // Success Function
                         onError,               // Error Function
                         { yourOwn : userData } // Custom User Data to Handler
            );

        });

        function OnSuccess(response, usercontext)
        {

            // usercontext.yourOwn === userData;

            // response is sent WITHOUT "d", it is removed internally by the proxy 

        alert(response);
        }

});

别忘了包含ScriptManager ...