在 index.aspx 页面插入记录后重定向到 ajax 成功函数 Asp.net Ajax

Posted

技术标签:

【中文标题】在 index.aspx 页面插入记录后重定向到 ajax 成功函数 Asp.net Ajax【英文标题】:After Insert the record at index.aspx page redirect to ajax success funtion Asp.net Ajax 【发布时间】:2019-05-24 00:01:57 【问题描述】:

在index.aspx页面插入记录后重定向到ajax成功函数并显示消息alert("success");我写了函数addProject() 来完成这项任务。我没有收到任何错误。记录已成功添加到数据库中。但alert("success") 消息不显示。

表单设计

<form  id="frmProject" runat="server">
    <div>
        <label class="form-label">First Name</label>    
        <input type="text" id="fname" class="form-control"  />
    </div>
    <div class="form-group" align="left">
        <label class="form-label">Age</label>
        <input type="text" id="age" class="form-control"  />
    </div>
    <div>
        <input type="button" id="b1" value="add" class="form-control" onclick="addProject()" />
    </div>
</form>

Ajax

function addProject() 
    $.ajax(
        type: 'POST',
        url: 'insert.aspx',
        dataType: 'JSON',
        data: fname: $('#fname').val(), age: $('#age').val(),
        success: function (data)         
            alert("success");
        ,
        error: function (xhr, status, error) 
            console.log(xhr.responseText);
        
    );

插入.aspx

protected void Page_Load(object sender, EventArgs e)

    string fname = Request.Form["fname"];
    string age = Request.Form["age"];
    string sql = "insert into record values('" + fname + "','" + age + "')";
    SqlCommand cmd = new SqlCommand(sql, con);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();

【问题讨论】:

可能get_all有错误,所以成功函数失败。 我删除了 get_all 函数并尝试了它是行不通的先生。 console.log 我没有收到任何消息先生 当用户点击add按钮时,页面是否完全刷新? 不刷新并添加数据先生但不显示警报 【参考方案1】:

问题是对insert.aspx 的调用不会返回 JSON,但会返回一些 html。 jQuery 的带有dataType: 'JSON' 的ajax 调用期望API 调用的响应将返回一个JSON 对象。如果响应无法解析为 JSON,则不会调用 success 函数。

insert.aspx 文件中,您可以返回一个 JSON 对象,即使是一个空对象也足够了。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="insert.aspx.cs" %>


【讨论】:

【参考方案2】:

试试这个代码

[WebMethod]
    public static string doSomething(string fname,string age)
    
      string sql = "insert into record values('" + fname + "','" + age + "')";
      SqlCommand cmd = new SqlCommand(sql, con);
      con.Open();
      cmd.ExecuteNonQuery();

      con.Close();
      return "Sucess";
    

并像这样更新您的 ajax 调用

function addProject() 
            $.ajax(
                type: 'POST',
                url: 'Index.aspx/doSomething',
                dataType: 'JSON',
                contentType: "application/json; charset=utf-8",
                data: fname: $('#fname').val(), age: $('#age').val(),
                success: function (data)         
                    alert("success");

                ,
                error: function (xhr, status, error) 
                    debugger;
                    console.log(xhr.responseText);
                
            );

        

【讨论】:

我尝试了您发布的代码,但在执行程序时出现错误 .string fname = Request.Form["fname"];字符串年龄 = Request.Form["age"];错误是非静态字段、方法或属性需要对象引用 我试过你更新的代码。错误是非静态字段、方法或属性需要对象引用。不能在此范围内声明名为“fname”的局部变量。 忘记删除前两行,再次更新我的答案检查 现在没有错误显示记录未添加到数据库中。以及如何调用doSomething函数onePage_Load 为什么要在页面加载时调用该函数,点击添加按钮时会插入数据,而不是页面加载

以上是关于在 index.aspx 页面插入记录后重定向到 ajax 成功函数 Asp.net Ajax的主要内容,如果未能解决你的问题,请参考以下文章

用户登录后重定向到要访问页面

CakePHP 登录后重定向到当前页面

如何将客人重定向到登录页面,在laravel 5.2登录后重定向回来[关闭]

django - 注册用户后重定向到页面

烧瓶如何在ajax调用后重定向到新页面[重复]

使用 Spring Security 登录后重定向到不同的页面