jquery - jquery 不从 javascript 函数调用 Web 方法

标签 jquery asp.net ajax

这里是一位长期 WinForm 程序员,但对 Web 编程领域还是个新手。我有 Visual Studio 2010 并且创建了一个新的网站项目。 我似乎无法让 ajax 调用我创建的 webmethod。当我单击页面上的按钮时,什么也没有发生。

当我创建网站项目时,jquery 1.4.1 似乎会自动添加到 Scripts 文件夹中。

在 Default.aspx 中,我添加了 2 个脚本标记:

<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript" src="Scripts/Process.js">

我在 Process.js 中定义 onclick 函数的页面上放置了一个按钮:

<input id="btnTest" type="button" value="Test" onclick="btnTest_onclick()" />

在 Process.js 中我有以下代码:

function btnTest_onclick() {

    var strData = JSON.stringify({
        userid: 5
    });

    alert(strData);

    $.ajax({
        url: 'Default.aspx/GetData',
        type: "POST",
        data: strData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: Success,
        failure: Failure,
        async: true
    });
}

function Success(data) {
    alert("success");
}

function Failure(data) {
    alert("failure");
}

在 Default.aspx.cs 中:

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

    }

    [WebMethod()]
    public static string GetData(int id)
    {
        return "hello, my id is " + id;
    }
}

最佳答案

我不知道您是否需要使用 JQuery 发出 Ajax 请求,但您可以使用 ASP.NET ajax 的功能更轻松地对页面方法执行 ajax 请求。

首先我想指出,要使用 PageMethods,您需要将脚本管理器控件添加到页面并指定 EnablePageMethods="True"。

当您这样做时,ScriptManager 将呈现 PageMethods 客户端定义,它代表页面上定义的页面方法的代理,您可以使用 Ajax 请求轻松调用此方法。

那么,您可以尝试以下代码:

<asp:ScriptManager ID="ScriptManager" runat="server" EnablePartialRendering="true" EnablePageMethods="True" />
<input id="btnTest" type="button" value="Test" onclick="btnTest_onclick()" />
<script type="text/javascript">
    function btnTest_onclick() {

        PageMethods.GetData(5, Success, Failure);
    }

    function Success(data) {
        alert("success");
        alert(data);
    }

    function Failure(data) {
        alert("failure");
    }

</script>

正如您所看到的,这段代码的代码行数较少,而且可以正常工作。

关于jquery - jquery 不从 javascript 函数调用 Web 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13424651/

相关文章:

asp.net - IIS 7 强制新鲜图像

javascript - 逐个字母显示文本

c# - ASP.Net Identity 2.1 alpha SignInManager.GetVerifiedUserIdAsync 无效转换

javascript - 我可以在不是我的网站上添加事件监听器吗?

c# - 如何通过更改 ASP.NET MVC 中的 URL 来阻止对 Controller 的访问?

javascript - 如何将 php/ajax 请求转为 OOP

php - 对 PHP 的非阻塞 Ajax 请求

javascript - jQuery + PHP + JavaScript + WordPress : HTML Button call on click

javascript - jquery typeahead 设置静态第一个元素,然后按 asc 排序其他元素

jquery - 如何获取引导 TreeView 中所有选中的节点