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



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

表单设计

<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);
}
});
}

insert.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();
}

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

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

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

试试这个代码

[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);
}
});
}

最新更新