问题描述
请教各位,如下代码,有id为abc的div,ajax返回一组数据,根据数据,动态添加一组复杂HTML内容到div中。具体下面代码里,需要添加一个视图my_view到div里,但是视图my_view是很复杂的Html内容,使用append方法,实际会报错,因为my_view转为html后,放进append方法,append的参数为字符串,但my_view有回车换行,js的字符串引号不能换行,除非把my_view全部内容缩为一行。有什么好办法实现我需要的功能吗?<divid="abc"></div><script>functiontest(){$.ajax({url:"test",type:"post",success:function(data){//这里操作返回数据for(vari=0;i<data.length;i++){$("#abc").append('@Html.Partial("my_view")',new{id=data[i].id});}}});}</script>
解决方案
本帖最后由 sunshuang1s 于 2015-09-25 13:59:58 编辑
解决方案二:
通过Get方式获取当你的my_view,然后直接添加到$('#abc')。url对应你my_view的路由$.get('url',function(view){$('#abc').html(view);});
解决方案三:
引用1楼xiaoguidangjiajia的回复:
通过Get方式获取当你的my_view,然后直接添加到$('#abc')。url对应你my_view的路由$.get('url',function(view){$('#abc').html(view);});
在后台把所有html循环做好,给回VIEW?这样如果很多的话,数据量很大啊。我的代码里用ajax就是因为ajax得到的data,可能只包括10个id号,最后循环生成10个my_view。如果10个my_view都靠后台做就太大了
解决方案四:
如果你这个很复杂的话,应该直接就是通过Action返回完整的View视图,ajax请求将得到的视图直接html也好,append也好到目标位置然后不可能一边执行js,一边执行后台代码的
解决方案五:
如果你是这样的问题的话,那你可以查下js模板,action返回json数据,然后直接将数据给模板就行了
解决方案六:
引用3楼starfd的回复:
如果你这个很复杂的话,应该直接就是通过Action返回完整的View视图,ajax请求将得到的视图直接html也好,append也好到目标位置然后不可能一边执行js,一边执行后台代码的
因为页面有点复杂,做这个是因为界面上有菜单,点每个菜单,对应添加出来的my_view个数不同,有的5个,有的10个,还会对每个my_view有js操作,操作好说,根据my_view的id写js操作。问题就是点菜单不想刷新整个页面,只能当点击菜单的时候,用ajax从后台获取菜单对应的ID组,每个ID生成一个my_view放进div。
解决方案七:
引用4楼starfd的回复:
如果你是这样的问题的话,那你可以查下js模板,action返回json数据,然后直接将数据给模板就行了
js模版是吧?我去看一下。
解决方案八:
我觉得楼上说的对。你不可能一边执行js,一边执行后台代码。要不就用action返回整体的view,要不就用楼上的方法返回json数据然后给模板。
解决方案九:
引用7楼xiaoguidangjiajia的回复:
我觉得楼上说的对。你不可能一边执行js,一边执行后台代码。
的
解决方案十:
引用7楼xiaoguidangjiajia的回复:
我觉得楼上说的对……
my_view里都是Html。
解决方案十一:
引用7楼xiaoguidangjiajia的回复:
我觉得楼上说的对。你不可能一边执行js,一边执行后台代码。要不就用action返回整体的view,要不就用楼上的方法返回json数据然后给模板。
都不知道怎么回你了,怎么发都说我有非法词组不让发。总之,my_view只是HTML,ajax哪一堆ID数组回来,一个ID添加一个my_view去div。没有一边执行js,一边执行后台。
解决方案十二:
JS太多就不要拼接了换行问题把它替换掉试试jquery.tmpl吧不过可能会引入新的问题比如你的JS事件不执行了
解决方案十三:
引用11楼tongxuejie的回复:
JS太多就不要拼接了换行问题把它替换掉试试jquery.tmpl吧不过可能会引入新的问题比如你的JS事件不执行了
就是想知道有没有什么合理一点的方案,现在这样怪怪的。
解决方案十四:
你可以试试一些mvvm框架我个人比较喜欢vue.js
解决方案十五:
引用2楼sunshuang1s的回复:
Quote: 引用1楼xiaoguidangjiajia的回复:
通过Get方式获取当你的my_view,然后直接添加到$('#abc')。url对应你my_view的路由$.get('url',function(view){$('#abc').html(view);});在后台把所有html循环做好,给回VIEW?这样如果很多的话,数据量很大啊。我的代码里用ajax就是因为ajax得到的data,可能只包括10个id号,最后循环生成10个my_view。如果10个my_view都靠后台做就太大了
后台直接返回一个PartialView啊。