Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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
Javascript 如果跨域Ajax请求满足目标div的内容,并在加载文档的几秒钟后生成该怎么办_Javascript_Jquery_Crossdomain Request.js - Fatal编程技术网

Javascript 如果跨域Ajax请求满足目标div的内容,并在加载文档的几秒钟后生成该怎么办

Javascript 如果跨域Ajax请求满足目标div的内容,并在加载文档的几秒钟后生成该怎么办,javascript,jquery,crossdomain-request.js,Javascript,Jquery,Crossdomain Request.js,我需要检索外部网站页面上生成的div的内容 我已经找了好一阵子了,一点运气都没有 我已经能够从该页面检索所有静态内容(跨域)。 但该div的内容只有在单击页面上的按钮后才会生成 url类似于: 因此,当选择类型和邮政编码时,url将变为 该div的内容将在整个页面内容加载后2-3秒左右显示 这是密码 $.ajax({ url: link, type: 'GET', success:

我需要检索外部网站页面上生成的div的内容

我已经找了好一阵子了,一点运气都没有

我已经能够从该页面检索所有静态内容(跨域)。 但该div的内容只有在单击页面上的按钮后才会生成

url类似于: 因此,当选择类型和邮政编码时,url将变为

该div的内容将在整个页面内容加载后2-3秒左右显示

这是密码

$.ajax({
                   url: link,
                   type: 'GET',
                   success: function (res) {
                       var headline = $(res.responseText).find('#divID').text();
                       $('#container').html(headline);
                   }
               });
更新:

delay()方法不能满足我的要求,因为我仍然需要毫不延迟地执行ajax调用。 更重要的是,在调用执行后,我需要在加载生成的/动态的/延迟的内容后(而不是加载页面内容的时间)可以触发回调函数。这里有两个不同的时间。 我只是不知道这是否可能

更新2:

完整的方法不是我需要的。它在请求完成时触发,但此时尚未生成生成的div内容。所以这仍然不是解决办法。这是我正在谈论的演示图片。您可以看到div#输出的内容仍然是空的

更新3:

下面是在#output div中插入内容的代码

var markerImage = "http://www.racv.com.au/wps/wcm/connect/ebffbd00473d0422974bbfc0de4a49c9/marker.png?MOD=AJPERES&CACHEID=ebffbd00473d0422974bbfc0de4a49c9";
  var searchString="";
  var fuelType=2;
  var resultPage = document.location;
  resultPage = String(resultPage).split("?");   // Get URL without the query string
  resultPage = resultPage[0];
function searchFuel(){
  if (document.getElementById('fuelType3').checked) {
    fuelType = 3;
  } else if (document.getElementById('fuelType2').checked) {
    fuelType = 4;
  } else if (document.getElementById('fuelType4').checked) {
    fuelType = 6;
  } else if (document.getElementById('fuelType1').checked) {
    fuelType = 2;
  } else if (document.getElementById('fuelType5').checked) {
    fuelType = 5;
  }
//window.open("/wps/wcm/connect/racv/internet/primary/my+car/advice+_+information/fuel/petrol+prices/search+for+petrol+prices+around+melbourne?fuelType="+fuelType+searchString, '_self')
window.open(resultPage + "?fuelType=" + fuelType + searchString, "_self");  
}
此功能通过单击按钮触发,下面是代码

<input type="image" style="margin-top: 40px; cursor: pointer;" src="/wps/wcm/connect/993c7080474f0a60a0bff5aa2893940e/fpButton.gif?MOD=AJPERES&amp;CACHEID=993c7080474f0a60a0bff5aa2893940e" alt="search" id="search" border="0" class="submit" onclick="searchFuel();" onmouseover="javascript: this.style.cursor='pointer'">

我认为有两种可能性:

  • 外部链接通过ajax调用加载“延迟”内容: 在这种情况下,您需要访问这个额外ajax调用的url

  • 或者响应中已经存在“延迟”内容,并使用setTimeout插入DOM: 在这种情况下,数据已经存在于您得到的响应中(或者在隐藏的html节点中,或者存储在某个javascript变量中,或者在javascript代码中以exetenso编写…),您必须找到从响应中提取数据的方法

  • 您的
    #output
    div将作为ajax调用的结果进行修改

    打开Firebug控制台,浏览到您试图抓取的页面,选择您的地理区域,并查看在更新页面时控制台中显示的内容


    发送一些ajax查询。仔细查看它们,找出哪一个包含您需要的信息。

    在显示以下内容之前使用延迟

    $('#container').delay(800).html(headline);
    

    使用jquery
    delay
    @Deadlock Hi-DL,延迟函数不符合我的要求。请看我文章的更新部分。Thxi如果这是如此简单的话,谷歌早就这么做了now@JanDvorak嗨,我想我并没有说这很容易。那个片段是如何改变
    #输出的?我唯一能看到的是一个
    窗口。打开
    call.Hi Deadlock,代码:$('#container').delay(800).html(headline);在成功回调中,因此无论您延迟多长时间显示检索到的内容,它都不会获取我想要的内容。重要的是只有在加载生成的内容后才触发回调(成功)。@Franva对于此死锁,您可以使用
    complete
    而不是
    success
    ,谢谢您的回复。完整的对我来说不起作用。请参阅更新2,其中说明了原因。嗨,LeGEC,这是可能性1。我使用了ajax调用(正如您在我的代码中看到的)来实现这一点。真正的问题在我更新的部分。请看一看。您是否识别了修改
    #output
    的js代码?您好,是的,我已经识别了js代码。请查看我的更新3部分。非常感谢!!