Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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/jquery将[object Window]呈现为HTML_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 使用ajax/jquery将[object Window]呈现为HTML

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("

我对以下函数有问题。它在浏览器中呈现为[对象窗口],而不是HTML内容

顺便说一句,eval(func_fix);正在正确执行InsertMenu()

知道为什么吗

先谢谢你

<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
中,您可以简单地使用
数据
,但无论如何-请小心使用全局变量,这是件坏事)