Ajax加载js的问题

Steven_Qin 2012-12-26 10:46:25
导航栏里按某个菜单, 通过ajax的方式更新显示区的内容, 内容是可以更新了, 但是我内容里面的js程序却无法运行了? 请问一下如何解决这个问题;
...全文
222 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱若如梦 2012-12-26
  • 打赏
  • 举报
回复
  alert(data);   $('#div_admin_content_right').html(data); 返回的data被当做字符串执行,要将想要加载的js代码分离出来 如 data.fun = "function test(){alert('test')};" 进行eval才能加入到当前作用域中 eval('('+data.fun+')'); 此时test()才能被执行,否则找不到。
Steven_Qin 2012-12-26
  • 打赏
  • 举报
回复
我把代码不放在文件中就可以执行. 但是如果我确实想把代码放到一个文件中呢
Steven_Qin 2012-12-26
  • 打赏
  • 举报
回复
$(document).ready(function(){
	var url;
	var poststr;
	var idname;
	// 用户管理
	$('#id_nav_user').click(function(){

		url = "/Users/user_list";
		poststr = "r=" + Math.random();
		$.post(url, poststr, function(data){
			//idname = document.getElementById('div_admin_content_right');
			//idname.innerHTML = data;
			alert(data);
			$('#div_admin_content_right').html(data);
			return false;
		});
		return false;
	});
});
代码如上, 我在js文件是放在data里包含;
爱若如梦 2012-12-26
  • 打赏
  • 举报
回复
不知道你更新显示区是指更新innerHMTL或者innerText吗? 如果是,那原来的时间绑定应该没有问题; 如果是增删dom元素,需要绑定对应的的事件。
Steven_Qin 2012-12-26
  • 打赏
  • 举报
回复
	
	$('#div_admin_table_user tr td').click(function(){
		
		var divtable = document.getElementById('div_admin_table_user');
		curtable = divtable.getElementsByClassName('table_admin_list');
		alert(curtable[0]);
		//curtable = $('#div_admin_table_user .table_admin_list');
		//alert(curtable[0]);
		tr = curtable[0].insertRow(curtable[0].rows.length);
		
		td = tr.insertCell();
	});
或者像版主所说的都可以。非常感谢各位
Go 旅城通票 2012-12-26
  • 打赏
  • 举报
回复
insertRow是table DOM对象的方法,jquery包装过的么有insertRow方法的

$('.id_href_add_usertype').click(function(event){
 
        curtable = $('#div_admin_table_user .table_admin_list')[0];//转为DOM对象
        //alert(curtable[0]);
        curtable.insertRow();
        return false;
    });
Steven_Qin 2012-12-26
  • 打赏
  • 举报
回复
想问一个基础问题 getElementById() 和直接用$('.idname')获取有区别吗? 我写了一个测试, 用getElementById()就可以成功insertRow
Steven_Qin 2012-12-26
  • 打赏
  • 举报
回复
for(i in curtable){
 alert(i);
 alert(curtable[i]);
}
采用了个笨办法, 遍历所有的table属性, 发现没有insertRow()这个东西;
Steven_Qin 2012-12-26
  • 打赏
  • 举报
回复
加入行号也不行; insertRow()如果不带行号, 默认的是在末尾插入;
爱若如梦 2012-12-26
  • 打赏
  • 举报
回复
引用 7 楼 Steven_Qin 的回复:
我执行curtable.remove()是可以删除掉table的,但是添加一行总是不成功
insertRow需要指明行号,加上要加入的行数就行了 如insertRow(0);
Steven_Qin 2012-12-26
  • 打赏
  • 举报
回复
我执行curtable.remove()是可以删除掉table的,但是添加一行总是不成功
Steven_Qin 2012-12-26
  • 打赏
  • 举报
回复
另外有一个奇怪的问题(没分了,就在这个贴追加):
$('.id_href_add_usertype').click(function(event){

		curtable = $('#div_admin_table_user .table_admin_list');
		alert(curtable[0]);
		curtable.insertRow();
		return false;
	});	
alert(curtable[0])显示curtable是一个tableElement, 但是我执行insertRow()总是不成功, 请教.
Go 旅城通票 2012-12-26
  • 打赏
  • 举报
回复
设置innerHTML里面包含的script脚本不会被浏览器解析的。。需要eval执行代码或者直接在页面上放置代码块,而不是通过ajax返回

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧