在 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的主要内容,如果未能解决你的问题,请参考以下文章