如何在将所有记录插入数据库后显示警报消息

时间:2015-10-07 09:15:41

标签: jquery asp.net ajax

我正在开发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');
    }

它工作正常,但我想在成功插入所有行后显示警告消息('已成功保存')。

但问题是当有很多行时,它会在插入所有行之前显示警告消息。

请帮助......

5 个答案:

答案 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');
}