Javascript getElementById使jquery文档准备执行两次
这段代码应该运行到load.php,获取一些xml格式的数据,对其进行解析,然后将其加载到div中并显示出来。除了load.php中的数据显示两次之外,它工作得非常好。有没有另一种方法不会导致数据显示两次?我已经看到许多与文档就绪功能相关的帖子导致了这个问题,但似乎无法找出如何将任何解决方案应用到这个案例中。我把这个放在我页面的标题标签上。我真的希望保留这种格式,因为最终我会将一些数据发布到load.php页面 剧本Javascript getElementById使jquery文档准备执行两次,javascript,jquery,post,Javascript,Jquery,Post,这段代码应该运行到load.php,获取一些xml格式的数据,对其进行解析,然后将其加载到div中并显示出来。除了load.php中的数据显示两次之外,它工作得非常好。有没有另一种方法不会导致数据显示两次?我已经看到许多与文档就绪功能相关的帖子导致了这个问题,但似乎无法找出如何将任何解决方案应用到这个案例中。我把这个放在我页面的标题标签上。我真的希望保留这种格式,因为最终我会将一些数据发布到load.php页面 剧本 $(文档).ready(函数(){ $.ajax({ 键入:“POST”,
$(文档).ready(函数(){
$.ajax({
键入:“POST”,
url:'load.php',
成功:loadReturn
});
函数loadReturn(数据){
var xml=$.parseXML(数据);
$xml=$(xml);
$errorcode=$xml.find('errorcode');
$data=$xml.find('data');
document.getElementById(“defaultcode”).innerHTML=$data.text();
$(“#默认代码”).fadeIn(300);
}
});
HTML
a titleblah-blaha titleblah-blah
提前感谢您抽出时间。首先,我尝试以正确的方式修复您的代码。但我不认为代码是错的。应该是您已经从
load.php
发送了两个数据
标记。请检查您返回的数据
$(document).ready(function () {
$.ajax({
type: 'POST',
url: 'load.php',
success: loadReturn
});
function loadReturn(data) {
// check your data
console.log(data);
// jQuery will parse for you automatically
var $xml = $(data);
var $errorcode = $xml.find('errorcode');
var $data = $xml.find('data');
// set html before fadeIn
$("#defaultcode").html($data.text()).fadeIn(300);
}
});
为什么在一行使用
document.getElementById(“defaultcode”)
,在下一行使用$(“#defaultcode”)
?我对结果感到惊讶,因为只有一个“defaultcode”元素,innerHTML应该替换已经在其中的任何内容-即使loadReturn被调用了两次(不应该是这样),data.text()应该只有一次。你能像浏览器的检查器在初始化后显示的那样,粘贴defaultcode的HTML吗?(右键单击文本,单击Inspect元素)success:loadReturn
不应该是success:loadReturn()
或success:function(){success:loadReturn();}
?另外,您使用的是jquery,但您更喜欢使用innerHTML()
这非常容易使用$(“#默认代码”).html('text')。fadeIn('slow'))
在jquery..@DrixsonOseña--不,loadReturn
是正确的方法,如果您使用loadReturn()
它将立即调用函数并抛出错误。感谢您向我展示这个$(“#defaultcode”).html($data.text()).fadeIn(300);我不知道它们可以这样结合起来。:-)您可以这样做,因为许多jQuery方法都会自行返回它。它调用了方法链接
<div id="defaultcode" style><h3>a title</h3><p>blah blah</p><h3>a title</h3><p>blah blah</p></div>
$(document).ready(function () {
$.ajax({
type: 'POST',
url: 'load.php',
success: loadReturn
});
function loadReturn(data) {
// check your data
console.log(data);
// jQuery will parse for you automatically
var $xml = $(data);
var $errorcode = $xml.find('errorcode');
var $data = $xml.find('data');
// set html before fadeIn
$("#defaultcode").html($data.text()).fadeIn(300);
}
});