Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
将ajax响应保存到不在DOM上的元素_Ajax_Jquery - Fatal编程技术网

将ajax响应保存到不在DOM上的元素

将ajax响应保存到不在DOM上的元素,ajax,jquery,Ajax,Jquery,我在firts 10页面上有一些结果,然后使用load more result按钮,将上一个报告的id发送到PHP页面 我在这里读到,我必须使用.on,因为.live已经贬值,所以通过AJAX添加到DOM中的新元素上的click事件可以工作 我的问题是。。。我可以在一个不在初始DOM中的div上以某种方式显示通过AJAX提供的内容吗 $("#jokesWrap").on('click', 'a.share', function(event) { var joke_id = $(

我在firts 10页面上有一些结果,然后使用load more result按钮,将上一个报告的id发送到PHP页面

我在这里读到,我必须使用.on,因为.live已经贬值,所以通过AJAX添加到DOM中的新元素上的click事件可以工作

我的问题是。。。我可以在一个不在初始DOM中的div上以某种方式显示通过AJAX提供的内容吗

$("#jokesWrap").on('click', 'a.share', function(event) {        

var joke_id = $(this).attr('name');

var msgbox = $("#success[name='" + joke_id + "']");

$("#post-to-wall[name='" + joke_id + "']").hide();

msgbox.html('<img src="includes/images/load.gif">&nbsp; Loading...');

$.ajax(
    {
        type: "POST", 
        url: "includes/php/ajax.php", 
        data: "joke_id=" + joke_id, 
        success: function(msg)
            {
                if(msg == 'OK')
                    {
                        msgbox.html('<img src="includes/images/success.png" /> DONE!');
                    }
            } // function(msg)
    }); // ajax

event.preventDefault(); });
这是HTML部分:

<div id="jokesWrap">

<div class="joke" id="1">
    <p class="txt">
        some text
    </p>
    <div class="joke-options-bar">
        <a href="#" id="post-to-wall" class="share tip-this floatL" name="1" title="Post to wall">Post to wall</a>
        <span id="success" name="1" class="share floatL"></span>
        <br class="floatClear" />
    </div>
</div>
// the above area comes through loop from the ajax call
PS:一切正常:ajax调用tetxt被发布到墙上,而发布到墙上则被隐藏。住宿。。。成功的信息没有显示出来

PS2:加载。。。文本和成功消息在我单击AJAX调用之前DOM上的链接时显示,因为成功就在那里


有人帮忙吗?谢谢

在写入之前将其添加到DOM?

只要在执行AJAX的成功回调时DOM中存在该元素,就可以使用jQuery来选择和操作它,方法与最初加载页面时DOM中存在的元素相同。或者,您可以使用jQuery创建元素作为成功回调的一部分,使用AJAX请求的响应对其进行操作,然后将新创建的元素附加到DOM中所需的位置。大概是这样的:

var div = $('<div/>').attr('id', 'new-div-id').html(data);
$('body').append(div);
这将创建一个新的div,给它一个新的div id,然后将其innerHTML设置为任何数据(假设data是包含来自AJAX的响应文本的变量的名称),最后将其作为页面标记的新子项追加


看看对这个问题的编辑:使用id属性指定的元素id在整个文档中必须是唯一的;这包括后来作为AJAX回调的一部分添加的元素。不能有多个id为success的元素-通过取消name属性,并将值添加到id的末尾,使它们唯一,这样就可以获得success1、success2、,etc作为您的id。

查看对该问题的编辑:使用id属性指定的元素id必须在整个文档中是唯一的;这包括后来作为AJAX回调的一部分添加的元素。不能有多个id为success的元素-通过取消name属性,将值添加到id的末尾,使它们唯一,这样您就可以将success1、success2等作为id,然后将数据附加到successuniqueID?是,假设这是您要附加到的元素的正确ID,那么更改如下:var msgbox=$success[name='+joke_ID+'];收件人:var msgbox=$success+joke_id+?在末尾附加空字符串是不必要的success+joke_id可以很好地工作,但这是一般的想法。