Javascript 使用ajax/jquery将[object Window]呈现为HTML
我对以下函数有问题。它在浏览器中呈现为[对象窗口],而不是HTML内容 顺便说一句,eval(func_fix);正在正确执行InsertMenu() 知道为什么吗 先谢谢你Javascript 使用ajax/jquery将[object Window]呈现为HTML,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我对以下函数有问题。它在浏览器中呈现为[对象窗口],而不是HTML内容 顺便说一句,eval(func_fix);正在正确执行InsertMenu() 知道为什么吗 先谢谢你 <script> $(document).ready(function() { $("#component").each(function() { var func = $(this).attr("name"); var func_fix = func.replace("
<script>
$(document).ready(function() {
$("#component").each(function() {
var func = $(this).attr("name");
var func_fix = func.replace(")",","+$(this).attr("data-pagenum")+")");
var content = eval(func_fix);
$(this).replaceWith("<div>" + content + "</div>");
});
});
function InsertMenu(param,pagenum) {
$.get("compmenustructure.asp",{pagenum: pagenum, stylemenunum: param})
.done(function(data) {
content = data;
});
return content;
}
</script>
$(文档).ready(函数(){
$(“#组件”)。每个(函数(){
var func=$(this.attr(“名称”);
var func_fix=func.replace(“)”,“+$(this.attr)(“data pagenum”)+”);
var内容=评估(函数固定);
$(this.replace为(“+content+”);
});
});
函数插入菜单(参数,pagenum){
$.get(“compmenustructure.asp”,{pagenum:pagenum,stylemenunum:param})
.完成(功能(数据){
内容=数据;
});
返回内容;
}
您应该更好地阅读JavaScript(即ECMAScript 5.1)参考
“+content+”
是字符串和对象之间的+
操作,在这种情况下,通过调用对象的.toString()
方法将对象转换为其字符串表示形式
因此,
content
包含窗口
对象。让它包含您想要包含在div
中的字符串(我不知道您想要在那里包含什么,您的代码只是页面的一部分;除非您说出name
和data pagenum
属性中的内容,否则没有人可以回答您)。name=InsertMenu(7)data pagenum=38我只是尝试使用ajax包含一个菜单。如果我在$(this.replace)之前添加一个警报(content),则替换为(“+content+”);它呈现出良好的。。。但我不想输出此警报…您应该添加带有“+”的警报。。。你会发现这是不正确的。更不用说大错误了:您不能仅仅从ajax调用中“返回内容”——这是异步的。您必须在done
回调中执行所有操作(包括replaceWith
)。(并且您使用全局变量;请将var content
放在insertMenu
函数的开头-尽管如果操作正确,您将不需要它,也就是说,在done
中,您可以简单地使用数据
,但无论如何-请小心使用全局变量,这是件坏事)