0

我正在尝试使用 AJAX 请求调用用 C# 编写的简单服务器端 HelloWorld 方法。

默认.aspx

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title> 
    <script type ="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
    <script type="text/javascript">
        function AjaxCall() {
            $.ajax(
            {
                type: 'post',
                url: 'Default.aspx/Server_HelloWorld',
                datatype: 'json',
                success: function (result) { alert(result); }
            })

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="Scriptmanager1" runat="server" EnablePageMethods="true" EnablePartialRendering="true">
        <asp:Services>
            <asp:ServiceReference Path="TradeService.asmx" />
        </asp:Services>
    </asp:ScriptManager>
    <button id="Button2" type="button" runat="server"  onclick="AjaxCall()">AJAX+JQuery version</button>

    </form>
</body>
</html>

默认.aspx.cs

namespace AJAXService
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }  
        public String Server_HelloWorld()
        {
            return "Hello, How are you?";
        }
     }
}

但是,我没有返回字符串“你好,你好吗?”,而是返回网页的 html 代码。有谁知道为什么会这样?我最终试图让服务器端方法返回一个字符串,我可以使用该字符串填充 GridView 单元格,利用 AJAX 的部分回发功能。

4

3 回答 3

1

尝试这个

[WebMethod]
public static String Server_HelloWorld()
{
     return "Hello, How are you?";
}

所以使用WebMethod和静态。

于 2013-06-18T18:50:57.447 回答
1

是的,我想我知道为什么会这样!我自己也遇到了同样的问题,并做了一些研究。

尝试使用onclick="AjaxCall(); return false;". 这会取消通常的 ASP.NET onclick 事件(在这种情况下,它只会返回到您的页面,这就是您将页面作为响应的原因)并且只执行您的 JavaScript 方法。

(是的,我意识到我已经晚了大约 2 年,但我会把它扔在这里给那些面临同样问题的人)。

于 2016-05-02T09:49:37.250 回答
0

使用以下代码并检查您是否仍然面临问题,

你的 Ajax 调用 Javascript 方法....

function AjaxCall() {
        $.ajax(
        {
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            url: 'Default.aspx/Server_HelloWorld',
            datatype: 'json',
            success: function (result) { alert(result.d); }
        })

    }

添加以下命名空间

using System.Web.Services;
using System.Web.Script.Services;

您的 aspx.cs Ajax Web 方法,

[WebMethod]
[ScriptMethod]
public String Server_HelloWorld()
    {
        return "Hello, How are you?";
    }

希望这可以帮助...

于 2013-06-21T17:17:57.163 回答