Javascript 可以使用XMLHttpRequest跟踪代码隐藏中的大型SQL更新循环吗

Javascript 可以使用XMLHttpRequest跟踪代码隐藏中的大型SQL更新循环吗,javascript,jquery,ajax,xmlhttprequest,Javascript,Jquery,Ajax,Xmlhttprequest,我允许最终用户上传一个文件,然后读取到内存中,并通过它循环更新数据。我想知道一种方法可以将我在C#中执行的SQL循环的进度报告回UI,就像我们在上传文件时所做的那样。我们使用ajaxpost,然后逐行读取,所以当进行较大的读取时,我需要一个我们已读取的行数的进度状态。这是可能的,还是只适用于文件的上传/下载流 下面是进行文件上传的ajax调用,在等待ajax返回响应时,文件进度对于正在上传的文件非常有效,但对于循环跟踪却没有效果 var form = $('#FormUpload')[0];

我允许最终用户上传一个文件,然后读取到内存中,并通过它循环更新数据。我想知道一种方法可以将我在C#中执行的SQL循环的进度报告回UI,就像我们在上传文件时所做的那样。我们使用ajaxpost,然后逐行读取,所以当进行较大的读取时,我需要一个我们已读取的行数的进度状态。这是可能的,还是只适用于文件的上传/下载流

下面是进行文件上传的ajax调用,在等待ajax返回响应时,文件进度对于正在上传的文件非常有效,但对于循环跟踪却没有效果

 var form = $('#FormUpload')[0];
        var dataString = new FormData(form);

        $("#cboxClose").trigger("click");

        $.ajax({
            url: '/Uploader/Upload',  //Server script to process data
            type: 'POST',
            xhr: function () {  // Custom XMLHttpRequest
                var myXhr = $.ajaxSettings.xhr();
                if (myXhr.upload) { // Check if upload property exists
                    //myXhr.upload.onprogress = progressHandlingFunction
                    myXhr.upload.addEventListener('progress', progressHandlingFunction,
                        false); // For handling the progress of the upload
                }
                return myXhr;
            },
            //Ajax events
            success: uploadSuccessHandler,
            error: uploadErrorHandler,
            //complete: completeHandler,
            // Form data
            data: dataString,
            //Options to tell jQuery not to process data or worry about content-type.
            cache: false,
            contentType: false,
            processData: false
        });
    }
这里是我调用的MVC中的C#控制器的一部分,但是为了解决这个问题,我对逻辑进行了限制并使其具有一般性

 try
        {
            if (uploadedFile != null && uploadedFile.ContentLength > 0)
            {
                if (uploadedFile != null)
                {
                    if (uploadedFile.ContentLength > 0)
                    {

                        using (StreamReader sr = new StreamReader(uploadedFile.InputStream))
                        {
                            string currentLine;
                            int counterLine = 0;
                            // currentLine will be null when the StreamReader reaches the end of file
                            while ((currentLine = sr.ReadLine()) != null)
                            {
                                if (counterLine > 0)
                                {

                                    String fixedLine = currentLine;

                                    if (currentLine.Contains("/"))
                                    {
                                        fixedLine = currentLine.Remove('/');
                                    }

                                    string[] columns = fixedLine.Split(',');

                                    quoteDataRows.Add(new QuoteEntityItemVM()
                                    {
                                        Manufacturer = columns[0],
                                        Model = columns[2],
                                        Description = columns[1],
                                        LineID = lineCountId += 1

                                    });
                                }

                                counterLine += 1;
                            }
                        }
                   }
             }
有没有一种方法可以使用现代AJAX不仅显示uplaod的进度,而且当计数器循环向UI报告进度时,比如(“行读取(n)的总行(n)”返回UI,或者这是不可能的


-谢谢-

您可以向api发送请求,以检查已读取的行数。或者您可以配置websocket。如果它处于不同的调用中,我如何向api发送请求并报告?您可以提供基本示例吗?这可能是直截了当的,我对此有些过火。实际上,我喜欢websocket方法,但忘记了现在在HTML5中使用它。谢谢,我会尝试一下。如果我解决了它,我会发布答案。我不确定如何使用web套接字示例将整数计数发送回UI。我看到您使用上下文进行构造,但如何将其馈送到“消息”事件在我的c#循环中写回套接字?不幸的是,c#超出了我的范围,在java中,您将从当前会话调用一个对象来传递消息,它在c#中应该类似。您应该看看官方文档。