如果您想了解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实时更新数据)
- ajax – jQuery .always()似乎在$.get()请求实际完成之前触发
- ajax异步刷新实现更新数据库_jquery
- ajax更新成功后jquery如何更新cell的innerhtml
- ajax更新数据后,jquery、jq失效问题_jquery
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”或类似吗?
谢谢
解决方法
$.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()请求实际完成之前触发
代码
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()回调的目的是解释这一点.非常感谢任何帮助我理解的东西.谢谢!
解决方法
对于外部请求,这很容易.只需将一个呼叫链接到.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
上篇文章都是关于界面的东西,下面写关于如何把无刷新的把数据写入到数据库中。
当我们改变某一个人或某几个人的某项分值实现无刷新写入数据库。
首先,我们需要声明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("评分失败,请重新评分或者与管理员联系");
}
}
}
}