使用Jquery从另一个项目调用WebMethod

时间:2015-05-13 13:11:52

标签: c# jquery asp.net ajax webmethod

我在Visual Studio中创建了一个名为' MyProject '的项目,并在其中添加了名为' MyPage.aspx 的.aspx文件'

在' MyPage.aspx.cs '中,有一种网络方法,如下所示

        [WebMethod(EnableSession=true)]
        public static string GetDetails()
        {
            try
            {
                var data= HttpContext.Current.Session["mySession"] as myDto;
                return myDto.Username;
            }
            catch
            {
                return "Sorry";
            }
        }

现在,我在名为&#39; NewProject &#39;的同一解决方案中创建了另一个项目。 我在这个项目中有一个页面&#39; NewPage.aspx &#39;,我试图从&#39; MyPage.aspx <中调用GetDetails() /强>&#39; (MyProject的)。

所以我尝试了以下代码。

NewPage.aspx

 <script type="text/javascript">

        $(document).ready(function () {
            $.ajax({
                type: 'Get',
                url: 'http://localhost:2463/MyPage.aspx/GetDetails',
                success: function (data) {
                    alert(data);
                },
                error: function (response) {
                                alert('Error');
                            }
            })

        });
    </script>

但网络方法并未受到影响。我得到了错误&#39;警报显示。

我也尝试过这个     

    $(document).ready(function () {
                    $.ajax({
                        type: "POST",
                        url: "http://localhost:2463/MyPage.aspx/GetDetails",
                        contentType: "application/json; charset=utf-8",
                        data: '{}',
                        datatype: "json",
                        success: function (msg) {
                            alert('success');
                        },
                        error: function (response) {
                            alert('Error');
                        }
                    });
    });

</script>

但没有运气。

Plz帮助...... !!

3 个答案:

答案 0 :(得分:1)

听起来像是一个CORS问题。

默认情况下,您无法访问不在原始域(方案,主机名,端口)内的服务。

答案 1 :(得分:1)

在进行jquery ajax调用时,您必须确保链接http://localhost:2463/MyPage.aspx/GetDetails可用。为了那个原因 您可以在VS的单独实例中运行MyProject,然后在另一个VS实例中运行NewProject。

答案 2 :(得分:0)

检查inspect元素中的控制台并找到给定错误的解决方案。 您可以调用另一个页面的webMethod。你的代码似乎是对的。 而且无需编写整个网址(&#39; http://localhost:2463/MyPage.aspx/GetDetails&#39;),只需写下“MyPage.aspx / GetDetails&#39 ;.