等待AJAX​​执行客户端操作

时间:2014-01-22 17:45:06

标签: javascript ajax jquery

我正在调用一个带有ajax的页面,它应该在返回之前运行一个javascript代码

例如:

differentPage.php

..code
<div id="awesomeDiv"></div>
<script>
 $("#awesomeDiv").html("it is very awesome");
</script>
..code

现在在我的页面中,我们称之为“myPage.php”我为differentPage.php调用ajax并需要在awesomeDiv中获取html,如下所示:

myPage.php

$.ajax({
 'url':  'differentPage.php',
 'dataType': 'html',
 'success': function(data, textStatus, jqXHR) {
    myFunc(data);
   }
});

function myFunc(data){
 var htmlData = $($("<div>").html(data)[0]);
 var awesomeDiv = htmlData.find("#awesomeDiv"); 
 alert(awesomeDiv);
}

警告空字符串。

有没有办法让ajax调用等到所有客户端代码都结束?

1 个答案:

答案 0 :(得分:-1)

这不是很安全,但这是一个解决方案。你应该:

  1. 附加来自服务器的HTML代码
  2. 执行来自服务器的脚本
  3. 所以,代码应该是近似的:

    function myFunc(data){
        var htmlData = $("<div>").html(data).appendTo('#container'),
            awesomeDiv = $('#awesomeDiv', htmlData);
        $('script', obj).each(function(script) {
            eval(script.innerHTML);
        }); 
        alert(awesomeDiv);
    }
    

    注意:以这种方式传输脚本是不安全的!将脚本包含在HEAD中(使用标记SCRIPT)然后操作它们会更好。