【问题标题】:After Insert the record at index.aspx page redirect to ajax success funtion Asp.net Ajax在 index.aspx 页面插入记录后重定向到 ajax 成功函数 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按钮时,页面是否完全刷新?
  • 不刷新并添加数据先生但不显示警报

标签: jquery asp.net json ajax webforms


【解决方案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
    • 为什么要在页面加载时调用该函数,点击添加按钮时会插入数据,而不是页面加载
    猜你喜欢
    • 2016-08-07
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多