论坛首页 Web前端技术论坛

关于prototype中AJAX.Updater一个奇怪问题

浏览 4559 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-01  
大家好,最近用prototype做项目开发一段时间,最近在使用其ajax方面功能时候出现一个奇怪问题,
环境:
prototype1.5.1
业务描述:
做一个搜索功能,需要把根据前端查询条件进行查询结果返回,并把结果用AJAX.Updater方式放到页面指定div中
问题描述:
如果在div有任何元素,在触发AJAX.Updater都会使div元素外的值出现两遍,具体情况如下
<script src="${ctx}/scripts/prototype.js"></script>
<script>
function aa(){
var url = '${ctx}/registerresult.do';
    var name22=$F("name2");
var myAjax = new Ajax.Updater(
{success:'brandId'},
url,
{
method: 'post',
parameters:'&name2='+$F("name2"),
onFailure: reportError
});

}
    function reportError(){
      alert("抱歉,此查询不存在,请重试.");
     }
</script>
</head>

<body>
<label>
科室
<input type="text" name="name2" />
</label>
<input type="button" onclick="aa()" value="搜索" /> </p>
<div id="brandId">
<table>
<c:forEach items="${results}" var="result">
<tr>
<td>
<input type="checkbox" name="idd" value="${result[0]}" />
</td>
<td>
${result[1]}
</td>
<td>
${result[2]}
</td>
<td>
${result[3]}
</td>
<td>
${result[4]}
</td>
<td>
${result[5]}
</td>
<td>
${result[6]}
</td>
<td>
${result[7]}
</td>
</tr>
</c:forEach>
</table>
</div>
</body>
</html>

在我点击搜索按钮时候,<div id="brandId">之外的页面元素又出现了一遍,页面上有两组完全一样的数据,也就是页面上出现两遍 科室,如果把它放入<div id="brandId">就不出现,但我输入查询值就不存在了,具体看附件,尝试很多方式,都不能解决,麻烦大家给看一下,谢谢[size=18][/size]
  • 大小: 48.3 KB
   发表时间:2007-11-01  
你'${ctx}/registerresult.do'返回的结果里面带有那些input button吧,当然又会更新到div里面
0 请登录后投票
   发表时间:2007-11-01  
没有,里面就是数据,数据没问题
0 请登录后投票
   发表时间:2007-11-02  
今天又研究了一下prototype.js原码,如果返回的是text方式,它会把文本内容显示在指定的div中,如果返回的是对象或集合,它会把整个页面元素除了js之外都给你装到div中,出现昨天说的情况,但这个方式不是很合常理,哪位给看一下,谢谢
0 请登录后投票
   发表时间:2008-04-07  
最近用prototype做了一点东西,确实也发现了类似的奇怪的问题。我用的是1.6
后来解决方法是把div一律都现display搞成none,调用结束再block.
因为是试着做,觉得大概是自己某些地方疏忽。
不过这么具有普遍性,莫非是这个东东的bug?
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics