我正在开发Asp.net项目。 我试图使用jquery ajax将所有gridview记录插入数据库。这是我的代码
function Insert() {
var Grid = document.getElementById('<%=gvMyGrid.ClientID%>');
var Value={};
for (var i = 1; i < Grid.rows.length; i++) {
Value.Sr = Grid.rows[i].cells[0].innerText;
Value.Name = Grid.rows[i].cells[1].innerText;
Value.Marks = Grid.rows[i].cells[2].children[0].value;
$.ajax({
type: "POST",
url: "Default.aspx/Insert",
data: '{Value:' + JSON.stringify(Value) + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
}
});
}
alert('Saved Successfully');
}
它工作正常,但我想在成功插入所有行后显示警告消息('已成功保存')。
但问题是当有很多行时,它会在插入所有行之前显示警告消息。
请帮助......
答案 0 :(得分:1)
function Insert() {
var Grid = document.getElementById('<%=gvMyGrid.ClientID%>');
var Value={};
var count=0;
for (var i = 1; i < Grid.rows.length; i++) {
Value.Sr = Grid.rows[i].cells[0].innerText;
Value.Name = Grid.rows[i].cells[1].innerText;
Value.Marks = Grid.rows[i].cells[2].children[0].value;
$.ajax({
type: "POST",
url: "Default.aspx/Insert",
data: '{Value:' + JSON.stringify(Value) + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
count=count+1;
}
});
}
if(count==Grid.rows.length)
{
alert('Saved Successfully');
}
}
答案 1 :(得分:0)
使用success:callback确定插入完成的时间。
每次调用成功回调时递增计数器变量,当计数器等于“Grid.rows.length”时,显示成功消息。
答案 2 :(得分:0)
你可以在jQuery(http://api.jquery.com/jquery.ajax/)的ajax函数上使用成功回调。
在回调中,检查它是否是最后一行,如果是,则发送成功消息。
尝试此代码(未经测试)。
function Insert() {
var Grid = document.getElementById('<%=gvMyGrid.ClientID%>');
var Value={};
for (var i = 1; i < Grid.rows.length; i++) {
Value.Sr = Grid.rows[i].cells[0].innerText;
Value.Name = Grid.rows[i].cells[1].innerText;
Value.Marks = Grid.rows[i].cells[2].children[0].value;
$.ajax({
type: "POST",
url: "Default.aspx/Insert",
data: '{Value:' + JSON.stringify(Value) + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
if (i == Grid.rows.length-1) {
alert('Saved Successfully');
}
}
});
}
}
答案 3 :(得分:0)
试试这个,因为ajax调用是异步的,他不会等待响应,它会直接执行下一个语句,所以使用XMLHttpRequest进行同步连接
requests
答案 4 :(得分:0)
Shaiwal Tripathi根据您的要求检查
function Insert() {
var Grid = document.getElementById('<%=gvMyGrid.ClientID%>');
var Value={};
var xmlhttp;
for (var i = 1; i < Grid.rows.length; i++) {
Value.Sr = Grid.rows[i].cells[0].innerText;
Value.Name = Grid.rows[i].cells[1].innerText;
Value.Marks = Grid.rows[i].cells[2].children[0].value;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
//every Success message
}else if(xmlhttp.readyState==4 && xmlhttp.status!=200){
//anyone record false
}
}
xmlhttp.open("POST",requestURL,true);
xmlhttp.setRequestHeader("Cache-Control", "no-cache");
xmlhttp.send('{Value:' + JSON.stringify(Value) + '}');
}
alert('Saved Successfully');
}