加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET jQuery Ajax调用代码隐藏方法

发布时间:2020-12-15 06:46:02 所属栏目:百科 来源:网络整理
导读:我对Web开发非常新鲜,但在开发方面有很多经验.我有一个ASP页面有几个输入字段和一个提交按钮.这个提交按钮纯粹叫$.ajax,我打算在代码隐藏文件中调用一个方法.不过,我注意到两件有趣的事情.首先,无论提供什么数据,ajax调用都会成功.其次,responseText字段是整
我对Web开发非常新鲜,但在开发方面有很多经验.我有一个ASP页面有几个输入字段和一个提交按钮.这个提交按钮纯粹叫$.ajax,我打算在代码隐藏文件中调用一个方法.不过,我注意到两件有趣的事情.首先,无论提供什么数据,ajax调用都会成功.其次,responseText字段是整个页面的html源代码.

我已经阅读了this和其他指向webconfig的文章,但是这些解决方案似乎并没有解决我的问题.

这是asp页面:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    <script src="TesScript.js"></script>
    <link rel="Stylesheet" type="text/css" href="TestStyle.css" />
</head>
<body>
    <div>
        <ul class="tempList">
            <li>Name:
                <input id="nameText" type="text" />
            </li>
            <li>Attending:
                <input id="yesButton" type="radio" name="attending" />
                Yes
                <input id="noButton" type="radio" name="attending" />
                No </li>
            <li>Return Address:
                <input id="returnAddressText" type="text" />
            </li>
            <li>
                <input id="submitButton" type="button" onclick="submit()" value="Submit" />
            </li>
        </ul>
    </div>
    <ul id="errorContainer" class="errorSection" runat="server" />
    <ul id="messageContainer" class="messageSection" runat="server" />
</body>
</html>

代码背后:

using System;
using System.Web.Services;
using System.Web.UI;

namespace TestAspStuff
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender,EventArgs e)
        {
        }


        [WebMethod]
        public static string OnSubmit(string name,bool isGoing,string returnAddress)
        {
            return "it worked";
        }
    }
}

和JavaScript:

function submit() {

    var name = "my name";
    var isAttending = true;
    var returnAddress = "myEmail@gmail.com";

    SendMail(name,isAttending,returnAddress);
}

function SendMail(person,returnEmail) {

    var dataValue = { "name": person,"isGoing": isAttending,"returnAddress": returnEmail };

    $.ajax({
        type: "POST",url: "Default.aspx/OnSubmit",data: dataValue,error: function (XMLHttpRequest,textStatus,errorThrown) {
            alert("Request: " + XMLHttpRequest.toString() + "nnStatus: " + textStatus + "nnError: " + errorThrown);
        },complete: function (jqXHR,status) {
            alert("complete: " + status + "nnResponse: " + jqXHR.responseText);
        }
    });

}

现在,我注意到我可以将url属性更改为我想要的任何东西,并且错误方法从不被调用,状态是成功的,而responseText是整个html页面.我的webconfig有所有相应的部分(包括htmlModule部分).我在.Net 3.5中工作.我感谢任何帮助,再次,我真的很新,所以对他人来说显而易见的是很可能不明显.如果有一个更好的方法来做这个(从JavaScript调用asp.net代码隐藏方法,那就是)请随时发布.谢谢!!!

解决方法

首先,你可能想添加一个返回false;到JavaScript中的Submit()方法的底部(所以它停止提交,因为你在AJAX中处理它).

您正在连接到完整的事件,而不是成功的事件 – 有一个显着的差异,这就是为什么您的调试结果不如预期.此外,我从未使签名方法与您匹配,我一直提供一个contentType和dataType.例如:

$.ajax({
        type: "POST",contentType: 'application/json; charset=utf-8',dataType: 'json',success: function (result) {
            alert("We returned: " + result);
        }
    });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读