Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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 getElementById使jquery文档准备执行两次_Javascript_Jquery_Post - Fatal编程技术网

Javascript getElementById使jquery文档准备执行两次

Javascript getElementById使jquery文档准备执行两次,javascript,jquery,post,Javascript,Jquery,Post,这段代码应该运行到load.php,获取一些xml格式的数据,对其进行解析,然后将其加载到div中并显示出来。除了load.php中的数据显示两次之外,它工作得非常好。有没有另一种方法不会导致数据显示两次?我已经看到许多与文档就绪功能相关的帖子导致了这个问题,但似乎无法找出如何将任何解决方案应用到这个案例中。我把这个放在我页面的标题标签上。我真的希望保留这种格式,因为最终我会将一些数据发布到load.php页面 剧本 $(文档).ready(函数(){ $.ajax({ 键入:“POST”,

这段代码应该运行到load.php,获取一些xml格式的数据,对其进行解析,然后将其加载到div中并显示出来。除了load.php中的数据显示两次之外,它工作得非常好。有没有另一种方法不会导致数据显示两次?我已经看到许多与文档就绪功能相关的帖子导致了这个问题,但似乎无法找出如何将任何解决方案应用到这个案例中。我把这个放在我页面的标题标签上。我真的希望保留这种格式,因为最终我会将一些数据发布到load.php页面

剧本

$(文档).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-blah

a 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);
    }
});