Javascript 为什么要将元素附加到末尾

Javascript 为什么要将元素附加到末尾,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试使用jquery/ajax制作表单 我现在做的是: var form="<form id='frm'>name: <input type='text' id='name' name='name' /> <br />"; $("#productos").append(form); $.get("bb.php").done(function (data){ $("#frm").append(data); //

我正在尝试使用jquery/ajax制作表单

我现在做的是:

    var form="<form id='frm'>name: <input type='text' id='name' name='name' /> <br />";
    $("#productos").append(form);

    $.get("bb.php").done(function (data){
          $("#frm").append(data); // this return a select
    });

    $("#frm").append("<p id='a1'>aa</p>");
    $("#productos").append("</form>");
我期待着:

<form id="frm">
    name: <input id="nombre" type="text" name="name"></input>
    <select> … </select>
    <p id="a1"> … </p>
</form>
但我得到的是:

    <form id="frm">
        name: <input id="nombre" type="text" name="name"></input>
        <p id="a1"> … </p>
        <select> … </select>        
    </form>

我知道我以前可以使用insertbefore,但我想知道为什么会发生这种情况,以及是否有其他方法可以修复

,因为您在此处指定的回调-

$.get("bb.php").done(function (data){
      $("#frm").append(data); // this return a select
});
从服务器获得响应后执行,而-

$("#frm").append("<p id='a1'>aa</p>");


因为您在此处指定的回调-

$.get("bb.php").done(function (data){
      $("#frm").append(data); // this return a select
});
从服务器获得响应后执行,而-

$("#frm").append("<p id='a1'>aa</p>");


... .附加;-这不是在DOM中插入元素的方式。此外,ajax请求是异步的,因此只有当请求成功完成时,才会添加元素。@谢谢。我意识到这不是正确的方法。附加;-这不是在DOM中插入元素的方式。此外,ajax请求是异步的,因此只有当请求成功完成时,才会添加元素。@谢谢。我意识到这不是正确的方法,谢谢。哪一种是最常用或更好的使用方法?@Don:这取决于你想要达到的目标。如果您希望您的段落在响应到来之前在DOM中可用,请使用第二个段落。否则使用第一个。两个都有效,谢谢。哪一种是最常用或更好的使用方法?@Don:这取决于你想要达到的目标。如果您希望您的段落在响应到来之前在DOM中可用,请使用第二个段落。否则使用第一个。