Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 检测何时通过ajax加载资源_Jquery_Ajax_Dom - Fatal编程技术网

Jquery 检测何时通过ajax加载资源

Jquery 检测何时通过ajax加载资源,jquery,ajax,dom,Jquery,Ajax,Dom,我最近问过如何检测页面的所有资源(如图像和样式表)何时都已加载。答案是,使用$(window.load();方法 我现在的问题是如何检测内容何时通过AJAX加载完成。AJAX将一些img元素注入到DOM中。。。如何判断这些图像何时完成加载?在$.get()或$.post()函数中,可以提供ajax请求完成时将调用的函数的名称。例如: $.get("something.php",{data:'test'},foo); function foo() { // This function wi

我最近问过如何检测页面的所有资源(如图像和样式表)何时都已加载。答案是,使用$(window.load();方法

我现在的问题是如何检测内容何时通过AJAX加载完成。AJAX将一些img元素注入到DOM中。。。如何判断这些图像何时完成加载?

$.get()
$.post()
函数中,可以提供ajax请求完成时将调用的函数的名称。例如:

$.get("something.php",{data:'test'},foo);

function foo()
{
   // This function will be called when the request has completed
}
或:


检测ajax获取何时容易:使用jQuery中定义的ajax事件:

但我不确定你问的是同一件事。要检测图像何时完成加载(可能这相当于图像的src属性更改时的事件),可以使用变异事件。 干杯


jrh.

如果您正在调用,您可以为成功的请求设置回调函数:

$.ajax({
    url: _url,
    type: _type,
    data: _data,
    dataType: _dataType,
    success: _success
})

var _success = function(result) {
    $html = $(result);
    alert('HTML downloaded');

    // inject HTML into DOM here
}
您需要通过$html获取图像元素,并为每个图像注册加载函数回调,该回调在加载图像时触发:

$('#myImage').load(function() {  
    alert('Image Loaded');  
});

我不需要知道AJAX请求何时完成,因为AJAX请求将返回HTML,然后浏览器将获取图像。我可能错了,但如果您知道预期图像的高度和宽度(也许可以在服务器返回的HTML/JSON中返回),在回调函数中,可以执行while循环,检查$(“#img”).attr(“height”)或类似值是否与预期高度匹配。不幸的是,这不够动态,因为这是用户内容,可以以任何大小输入…内置PHP函数可以返回图像的高度和宽度。您可以使用它们获取高度和宽度,并将其与JSON数组中图像的url一起提供(请参阅php.net/JSON_encode)。我确信在其他语言中也有这样的功能。我不知道Firebug是否可以做到这一点,但可能是因为Firebug是firefox的扩展,它可以比普通javascript获得更多关于浏览器窗口的信息。您是否尝试过我的另一种解决方案,将图像的高度和宽度从PHP传递到JS(在PHP中使用getimagesize()),然后在JS中执行while()循环,以比较$(“#img”)的高度和宽度与PHP返回的高度/宽度?AJAX调用后不会立即加载图像。。DOM将被更新,然后资源将被获取。啊,我明白了。我已经稍微更新了答案,这将使您步入正轨。我将尝试使用此函数将图像计数与加载的图像计数相匹配,谢谢…图像src将始终设置为资源。。。获取资源时,它不会更改。
$('#myImage').load(function() {  
    alert('Image Loaded');  
});