我有一个javascript函数,我正在传递一个functionName,我需要在进行ajax调用后调用它。 ajax调用返回一些包含对js文件的引用的html。传递给我的函数的functionName在html中,但它引用了js文件中的对象。我注意到物体有时存在,有时却不存在。有没有办法确保对象始终存在(或等待它存在),然后只调用javascript函数。请注意,我不知道对象变量是什么,所以有没有办法确保脚本文件已在dom中加载,然后调用该函数。
function(functionName)
{
$.ajax({
url: properties.url,
type: properties.type,
data: properties.data,
dataType: properties.format,
success: function (data) {
// data contains <div>myname</div><script src="/myfile.js" type="text/javascript"></script>
// Put the data in some div
BindData(data);
// How to ensure that the script myfile.js is loaded in dom before I call eval
eval(functionName);
} );
}
答案 0 :(得分:2)
function(functionName)
{
$.ajax({
url: properties.url,
type: properties.type,
data: properties.data,
dataType: properties.format,
success: function (data) {
// data contains <div>myname</div><script src="/myfile.js" type="text/javascript"></script>
// Put the data in some div
BindData(data);
//ensure the script has loaded.
$.getScript($('script:first',data).attr('src'), function(){
eval(functionName);
});
});
}
答案 1 :(得分:0)
您可以尝试在ajax调用结束之前查看数据。 不确定但是,如果数据是“未定义”,您可以检查类似这样的内容
var data = GetAjaxData();
while(typeof data === undefined);
bind, eval ecc ecc
但是如果GetAjaxData返回其他内容,这将会改变。 您可以尝试相同的事情,但在此之前:
var data = null;
data = GetAjaxData();
while(data == null);
do stuff
您还可以使用成功处理程序回调尝试$ .ajax jquery 希望帮助