GVKun编程网logo

jquery .ajax更新数据处理时(成功或完成之前)(ajax实时更新数据)

11

如果您想了解jquery.ajax更新数据处理时(成功或完成之前)的相关知识,那么本文是一篇不可错过的文章,我们将对ajax实时更新数据进行全面详尽的解释,并且为您提供关于ajax–jQuery.al

如果您想了解jquery .ajax更新数据处理时(成功或完成之前)的相关知识,那么本文是一篇不可错过的文章,我们将对ajax实时更新数据进行全面详尽的解释,并且为您提供关于ajax – jQuery .always()似乎在$.get()请求实际完成之前触发、ajax异步刷新实现更新数据库_jquery、ajax更新成功后jquery如何更新cell的innerhtml、ajax更新数据后,jquery、jq失效问题_jquery的有价值的信息。

本文目录一览:

jquery .ajax更新数据处理时(成功或完成之前)(ajax实时更新数据)

jquery .ajax更新数据处理时(成功或完成之前)(ajax实时更新数据)

我正在尝试在处理时(成功或完成之前)更新数据

.ajax的“成功”部分等到PHP完成后…

在大多数情况下,等待“成功”是完全没问题的.

但是对于更长的PHP(比如在大文件上使用ffmpeg),等待时间太长并产生错误……

我有这个代码

$.ajax ({
    type: 'GET',async: true,url: '__/_/_path_to_PHP_file.PHP',dataType: 'html',data:'__POStvariable1__='+encodeURIComponent (__POStvariable1__)+
         '&__POStvariable2__='+encodeURIComponent(__POStvariable2__),cache: false,success: function(data){
        $('#div_that_needs_update').html(data);
    },error: function(request,status,error){
        console.log ( 'request.responseText --> ' + request.responseText + ' status --> ' + status + ' error --> ' + error );
    }
});

••••我试过“完成”“beforeSend”,但是有“whileLoading”或类似吗?

谢谢

解决方法

我想你正在寻找xhr

$.ajax({
        xhr: function(){
            var xhr = new window.XMLHttpRequest();
            //Upload progress
            xhr.upload.addEventListener("progress",function(evt){
                if (evt.lengthComputable) {
                    var percentComplete = (evt.loaded / evt.total) * 100;
                    $("#status").html(Math.round(percentComplete)); 
                }
            },false);
            //Upload progress
            xhr.upload.addEventListener("load",function(evt){

            },false);
            xhr.upload.addEventListener("error",function(evt){
                $("#status").html("Upload Failed");
            },false);
            xhr.upload.addEventListener("abort",function(evt){
                $("#status").html("Upload Aborted");
            },false);
           return xhr;
        },url: .........

希望它有所帮助

ajax – jQuery .always()似乎在$.get()请求实际完成之前触发

ajax – jQuery .always()似乎在$.get()请求实际完成之前触发

这可能是我对 AJAX如何运行的误解,但我有一种情况,即在GET请求实际完成之前调用$.get回调(.always()).至少,这就是它的样子.

代码

var apiRequest  = 'some/url/';

// fetch list of video embed codes
$.get( apiRequest,function( embed_codes ) {

    // added this per Explosion Pills' answer
    var jqxhrs = [];

    // for each embed code,get video details (name,duration,etc.)
    for ( var i = 0; i < embed_codes.length; i++ ) {
        var videoDetailsRequest = '/v2/assets/' + embed_codes[i];
        //..declare vars..

        // fetch video details
        var jqxhr = $.get( videoDetailsRequest,function( video ) {
            // build playlist entry for each video
            playlistItem = '<li><h3>' + video.name + '</h3><p>' + video.description + '</p></li>';

            // create object of video HTML,with key = "video name" for sorting later
            videoArray[video.name] = playlistItem;
        },'jsonp' )

        // added this per Explosion Pills' answer
        jqxhrs.push( jqxhr );
    }

    // updated from jqxhr.always( function() {
    $.when( jqxhrs ).always( function() {
        // create array of keys
        for ( k in videoArray ) {
            if ( videoArray.hasOwnProperty( k ) ) { keys.push( k ); }
        }

        // append alphabetized list of videos to the page...
    });
},'jsonp' );

代码的作用

本质上,代码执行此操作:循环浏览视频嵌入代码列表.对于for循环的每次迭代,获取有关每个视频的详细信息并将这些细节推送到多维数组中.完成获取所有视频后,请调用.always()回调,该回调将视频分类为按字母顺序排列的播放列表并附加到页面.

问题

在获取所有视频之前,有时会调用.always()回调.播放列表中有9个视频,但有时在回拨被触发之前只返回6或7个视频,这意味着我的播放列表有点短.我已通过alert()键数和使用控制台对此进行了测试.我看到的是6-7个视频将返回,然后回调中的alert()会触发,然后返回剩余的视频.

我的问题:

为什么会这样?我认为在AJAX请求完成后触发了.always()回调.这是不是意味着在回调被触发之前应该返回所有视频?我怀疑它与AJAX中的“A”有关,但我认为always()回调的目的是解释这一点.非常感谢任何帮助我理解的东西.谢谢!

解决方法

你设置它的方式,一旦循环中的最后一个ajax请求完成,.always回调就会触发.这可能与其他人无关.当循环中的所有请求都已完成或外部请求已完成时,我无法判断是否要触发它.

对于外部请求,这很容易.只需将一个呼叫链接到.always(或.done,我相信它们是相同的,后者是首选).

如果您希望在完成所有其他ajax请求后完成,则可以使用$.when,它会检查所有延迟对象何时完成:

var jqxhrs = [];
   ...for loop...
   var jqxhr = $.get( videoDetailsRequest
   ...
   },'jsonp');
   jqxhrs.push(jqxhr);
...
$.when.apply(undefined,jqxhrs).always(function () { /* your intended callback */

或者,您可以使用.pipe:

//Create initial deferred object
var jqxhr = $.Deferred();
   ...for loop...
   jqxhr = jqxhr.pipe($.get(...
jqxhr.always(function () { /* callback */

ajax异步刷新实现更新数据库_jquery

ajax异步刷新实现更新数据库_jquery

上篇文章都是关于界面的东西,下面写关于如何把无刷新的把数据写入到数据库中。

当我们改变某一个人或某几个人的某项分值实现无刷新写入数据库。
首先,我们需要声明XMLHttpRequest对象

复制代码 代码如下:

//声明XMLHttpRequest对象
var xmlHttp;
function createXMLHTTP() {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); //Mozilla浏览器
}
else if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE老版本
}
catch (e)
{ }
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE新版本
}
catch (e)
{ }
if (!xmlHttp) {
window.alert("不能创建XMLHttpRequest对象实例!");
return false;
}
}
}

同时,需要回调函数来确定是否修改成功
复制代码 代码如下:

//更新或者添加记录的回调函数(检验是否评分成功)
function ModifyScore ()
{
if (xmlHttp.readyState == 4)
{
// if (xmlHttp.status == 200)
{
if (xmlHttp.responseText == "true")
{
}
else
{
// alert("评分失败,请重新评分或者与管理员联系");
}
}
}
}

准备工作完成之后,下面就是关键的一步:
因为需要在修改分值的时候写入数据库,所以只需要在上篇博客中提高的改变下拉框值(循环选中项时)的执行这样一段代码:
复制代码 代码如下:

//获取互评ID
var criticsID = checkbox[i].value;
//把修改值写入数据库
//获取项目分数
var scoreAll = document.getElementById("score" +checkbox[i].value + srcElem.id + "");
var accessAllScore = scoreAll.outerText;
//获取项目编号
var assess = document.getElementById("assess" + srcElem.id);
var assessID = assess.title;
createXMLHTTP(); //创建XMLHttpRequest对象
//把数据传入到另一个页面执行
var url = "CriticsAgainAjax.aspx?criticsID=" + criticsID +"&assessID=" + assessID + "&accessAllScore=" +accessAllScore + "&Event=allCriticsInfo";
xmlHttp.open("Post", url, true);
// xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = AnswerOneKindQuestion;
xmlHttp.send(null);

最后,我们只需要在CriticsAgainAjax.aspx获取参数,并执行写入数据库就可以了
复制代码 代码如下:

//获取参数
if(Request.QueryString["Event"].ToString() =="allCriticsInfo")
{
string criticsID = Request.QueryString["criticsID"].ToString();
string assessID = Request.QueryString["assessID"].ToString();
string accessAllScore =Request.QueryString["accessAllScore"].ToString();
}

参数传过来之后,写入数据库就很容易了,这里就不提了。
这样,在前台显示的效果就是没有刷新,时时的把数据写入到数据库。只是把脏活累活都交给CriticsAgainAjax.aspx页面来干,这也是一种不错的分工。
这样写出了少刷新以外,还有另一个好处就是ajax是异步操作,即在js页面中把数据抛到CriticsAgainAjax.aspx之后,他就继续执行,他不考虑CriticsAgainAjax.aspx是否执行完成,可能抛过来100条数据,写入数据库需要三秒钟,而抛过来的时间是非常快的,可能就零点几秒,所以用户的感觉会非常好,他不需要在选中后等半天才能继续执行。

ajax更新成功后jquery如何更新cell的innerhtml

ajax更新成功后jquery如何更新cell的innerhtml

如何解决ajax更新成功后jquery如何更新cell的innerhtml?

我使用以下代码内联更新数据表。这工作正常,但我有一个我无法弄清楚的问题。此时,即使 ajax 调用不成功,cell.data(td.innerHTML); 也会更新单元格。如何更改此逻辑,使其仅在 ajax 调用成功时更新我的​​单元格数据?

数据表脚本的一部分:

  columnDefs: [ 
    

    { "name": "bullets","targets": 4 },{ "name": "notes","targets": 5 },{ "name": "mobcash","targets": 6 },{
targets: [4,5,6],createdCell: function (td,cellData,rowData,rowIdx,colIdx) {
  // ''td'' is the DOM node,not the DataTable cell
  td.setAttribute(''contenteditable'',true);
  td.setAttribute(''spellcheck'',false);
  td.setAttribute(''data-old_value'',cellData);
  $(td).css(''color'',rowData.cat_color);
  td.addEventListener("focus",function(e) {
    original = e.target.textContent;
  })
 td.addEventListener("blur",function(e) {
  if (original !== e.target.textContent) {
    // ''cell'' is the DataTable cell,not the DOM node:
    let cell = $(''#accountTable'').DataTable().cell(rowIdx,colIdx);
    cell.data(td.innerHTML);
    let columnName = $(''#accountTable'').DataTable().settings()[0].aoColumns[colIdx].sName;
    saveInlineEdit(td,columnName,rowData.id,cell.data()); 
    }
  })
}
} ]

发送ajax请求的脚本:

   <script>

function saveInlineEdit(editableObj,column,id,newValue) {
  

   var p = loadPrompt();
  var newValuechecked = newValue.replace(/\./g,"");
   console.log("New stripped value",newValuechecked);
  if($.isNumeric(newValue) === false && (column === "bullets" || column === "mobcash")){
  alert("Not updated,wrong input please change your input");
  $(editableObj).css("background","rgba(211,47,0.6)"); 
  return false; }
  
  if(column == "mobcash"){
    var updateValue = newValuechecked}
     if(column != "mobcash"){
    var updateValue = newValue} 
  // send ajax to update value
  $(editableObj).css("background","rgba(56,142,60,0.6) url(loader.gif) no-repeat right");
  $.ajax({
    url: "update_inlinedata.PHP",cache: false,data:''column='' + column + ''&value='' + updateValue + ''&id='' + id,success: function(response)  {
      console.log(response);
      // set updated value as old value
      $(editableObj).attr(''data-old_value'',updateValue);
      $(editableObj).css("background","");
      p.success(''Account data is succesfully updated !'');            
    
    
  }
  
 
  });
}
</script>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

ajax更新数据后,jquery、jq失效问题_jquery

ajax更新数据后,jquery、jq失效问题_jquery

给元素绑定click事件 ,但是遇到一个问题 就是 当我执行一些ajax请求后 这个click事件就失效了

比如说 我的分页是一个ajax请求 但我点下一页时 后生成的元素a就没有了click事件了

其实 原因很简单

ajax加载内容是在$(document).ready()之后的操作,这个时候给绑定函数的时候,找到的元素集合中还不包括ajax加载的内容,所以原来的没有问题,后加载的就没有绑定

解决方法 有两个 :

1. 在ajax请求成功之后重新绑定
2. 用live方法

复制代码 代码如下:



两种方法适用在不同的场合

如果是处理事件的话 可以用live
如果是其他一些处理方法的 live就不支持 只能重新绑定

关于jquery .ajax更新数据处理时(成功或完成之前)ajax实时更新数据的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ajax – jQuery .always()似乎在$.get()请求实际完成之前触发、ajax异步刷新实现更新数据库_jquery、ajax更新成功后jquery如何更新cell的innerhtml、ajax更新数据后,jquery、jq失效问题_jquery等相关知识的信息别忘了在本站进行查找喔。

本文标签: