使用 jQuery 将 $.post 发送到 .aspx

Posted

技术标签:

【中文标题】使用 jQuery 将 $.post 发送到 .aspx【英文标题】:sending $.post to .aspx using jQuery 【发布时间】:2013-05-13 19:13:25 【问题描述】:

我在新波士顿 youtube 频道上开始了 phpAcademy 制作的 jQuery 教程。 我到了必须创建电子邮件验证表单的部分,但是,我没有使用 PHP,我在本教程中使用 ASP.net。

所以,问题是即使我按照教程中的说明做了所有事情,但当我想从 .aspx 页面检索变量时,我无法使用 $.post 将任何变量发送到 .aspx 页面,它会检索我整个源代码。

主页源代码:

<input type="text" id="email" /> <span id="emailfeed"></span>

带有 jQ​​uery 代码的 javascript 文件:

function validate_email(email) 
        $.post('email.aspx',  email: email , function (data) 
            $('#emailfeed').text(data);

        );
    

    $('#email').focusin(function () 
        if ($('#email').val() === '') 
            $('#emailfeed').text('Enter your email here');
         else 
            validate_email($('#email').val());
        
    ).blur(function () 
        $('#emailfeed').text('');
    ).keyup(function () 
        validate_email($('#email').val());
    );

email.aspx.cs 代码:

protected void Page_Load(object sender, EventArgs e)
    
        if (Page.IsPostBack)
        

        string email = Request.Form["email"];
        emailLabel.Text = email;// HTTP Post
        
    

此代码的作用是将我在字段中键入的所有内容发送到 email.aspx,然后检索到达 email.aspx 的内容并将其显示在跨度标记“emailfeed”中。 所以基本上,我在电子邮件字段中写的内容应该显示在跨度标签之间......但这不会发生,相反,我得到了这个:

<!DOCTYPE html>

 <html xmlns="http://www.w3.org/1999/xhtml">
 <head><title>

 </title></head>
 <body>
 <form method="post" action="email.aspx" id="form1">
 <div class="aspNetHidden">
 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="6/oBNs2tFeYkrpkFpDL724BXcQwQ8axaBMe/+VEr/27lNqbjE1FyzyK6Zrl2TCcvjgfkv01vyV3PXehcal8bJZdEfpf4v5KkxQTelnzKhlM=" />
 </div>

 <div>
 <span id="emailLabel"></span>
 </div>
 </form>
 </body>
 </html>

所以基本上这是 email.aspx 的源代码,而不是我实际输入的内容。

我该如何解决这个问题?

【问题讨论】:

我还想提一下,我知道现在这个验证可以通过 HTML5 轻松完成,但我只是想弄清楚为什么这不起作用。 $.get 也对我不起作用,所以我想弄清楚是因为我做错了什么还是我错过了什么。 【参考方案1】:

我以前见过这种奇怪的行为,即显示页面源。我似乎记得这是由于 ajax 调用返回的 contentType 混淆了 ASP.NET 框架。尝试将$.postdataType 设置为html

【讨论】:

好的,你完全正确,现在它什么也没显示(它有效)。但问题是 jQuery 没有通过邮寄方式将变量“email”传递给我的 .aspx 文件。我究竟做错了什么?为什么我的 .aspx 文件收不到 $.post() 发送的信息? 你的回答只解决了我一半的问题......如果你能帮助我解决剩下的问题,那就太好了......我已经花了 3 个小时试图完成这项工作,但我没有t取得积极的结果... 我认为您的表单数据可能没有显示,因为您的 JSON 格式不正确。试试 "email": "email"

以上是关于使用 jQuery 将 $.post 发送到 .aspx的主要内容,如果未能解决你的问题,请参考以下文章

无法发送“POST”表单,jQuery 不会检测到提交动作

使用 Laravel 将 jQuery Ajax POST 请求作为 GET 发送

动态 jQuery PHP 表单不会将 POST 数据发送到 PHP var

jquery 序列化和 $.post

将 PHP $_POST 数组传递给 javascript/jQuery 以通过 ajax 发送回 PHP

jQuery 与 JSON