Javascript Ajax调用后更新DOM的最佳实践

Javascript Ajax调用后更新DOM的最佳实践,javascript,ajax,dom,Javascript,Ajax,Dom,我想知道在Ajax调用后更新DOM的最佳实践是什么 例如,假设我们有一个用户列表,我们可以使用一个表单添加一个用户,该表单通过Ajax调用插入该用户。提交表单并在数据库中添加用户后,编辑DOM以添加HTML,而不刷新页面(使用Ajax成功事件) 我认为有两种可能做到这一点: 进行Ajax调用,将用户添加到db中,并返回所有带有html标记的DOM结构,等等 制作一个Ajax,将用户添加到db中,返回用户的所有数据,并在Javascript中创建DOM元素 最好的方法是什么(或其他方法)?您可以使

我想知道在Ajax调用后更新DOM的最佳实践是什么

例如,假设我们有一个用户列表,我们可以使用一个表单添加一个用户,该表单通过Ajax调用插入该用户。提交表单并在数据库中添加用户后,编辑DOM以添加HTML,而不刷新页面(使用Ajax成功事件)

我认为有两种可能做到这一点:

  • 进行Ajax调用,将用户添加到db中,并返回所有带有html标记的DOM结构,等等

  • 制作一个Ajax,将用户添加到db中,返回用户的所有数据,并在Javascript中创建DOM元素


  • 最好的方法是什么(或其他方法)?

    您可以使用
    document.createElement()
    向DOM添加元素。然后使用
    innerHTML
    属性向元素添加内容。最后,使用
    .appendChild()
    将元素附加到另一个元素

    在这两种选择之间没有更好的办法。您可以在后端准备HTML结构,导入编写好的HTML并直接用JavaScript附加它,也可以在JavaScript中创建前端元素

    以下是使用后者的主要优点:

    • 调试JavaScript比调试PHP容易(AJAX调用所针对的PHP文件很难调试和维护)

    • 使用AJAX而不是HTML字符串返回对象更易于使用和维护。您可以使用API来处理数据。PHP只返回一个JSON对象

    • 如果JavaScript处理元素的创建,则可以将这些元素保存在变量中。有时,我发现将
      HTMLElement
      保存在JavaScript变量中很有用,这样我以后就可以访问它来更改其属性,而不必通过选择器(
      querySelector()
      和其他选择器)


    您可以使用
    document.createElement()
    将元素添加到DOM中。然后使用
    innerHTML
    属性向元素添加内容。最后,使用
    .appendChild()
    将元素附加到另一个元素

    在这两种选择之间没有更好的办法。您可以在后端准备HTML结构,导入编写好的HTML并直接用JavaScript附加它,也可以在JavaScript中创建前端元素

    以下是使用后者的主要优点:

    • 调试JavaScript比调试PHP容易(AJAX调用所针对的PHP文件很难调试和维护)

    • 使用AJAX而不是HTML字符串返回对象更易于使用和维护。您可以使用API来处理数据。PHP只返回一个JSON对象

    • 如果JavaScript处理元素的创建,则可以将这些元素保存在变量中。有时,我发现将
      HTMLElement
      保存在JavaScript变量中很有用,这样我以后就可以访问它来更改其属性,而不必通过选择器(
      querySelector()
      和其他选择器)


      • 我会选择第二个选项

        • 制作一个Ajax,将用户添加到db中,返回用户的所有数据,并在Javascript中创建DOM元素
        像这样分解它以提高可读性和维护性

        • 向AJAX添加操作,该操作链接到后端的函数(即PHP、Python),该函数执行DB更新等操作

        • 在Javascript中创建元素结构(可以与页面上的其他结构保持一致)。并将其包装在函数中

          document.body.onload = addElement;
          
          function addElement ($newuser) { 
            // create a new div element that would contain user record 
            var newDiv = document.createElement("div"); 
            // and give it some content 
            var newContent = document.createTextNode($newuser); 
            // add the text node to the newly created div
            newDiv.appendChild(newContent);  
          
            // add the newly created element and its content into the DOM 
            var currentDiv = document.getElementById("user-container"); 
            document.body.insertBefore(newDiv, currentDiv); 
            }
          

          • 我会选择第二个选项

            • 制作一个Ajax,将用户添加到db中,返回用户的所有数据,并在Javascript中创建DOM元素
            像这样分解它以提高可读性和维护性

            • 向AJAX添加操作,该操作链接到后端的函数(即PHP、Python),该函数执行DB更新等操作

            • 在Javascript中创建元素结构(可以与页面上的其他结构保持一致)。并将其包装在函数中

              document.body.onload = addElement;
              
              function addElement ($newuser) { 
                // create a new div element that would contain user record 
                var newDiv = document.createElement("div"); 
                // and give it some content 
                var newContent = document.createTextNode($newuser); 
                // add the text node to the newly created div
                newDiv.appendChild(newContent);  
              
                // add the newly created element and its content into the DOM 
                var currentDiv = document.getElementById("user-container"); 
                document.body.insertBefore(newDiv, currentDiv); 
                }
              

            两者都很好。但是第二个对你有好处API@RokoC.Buljan所有的html标签,比如return
            nameemal
            都意识到我用法语写的(balise=tag)都很好。但是第二个对你有好处API@RokoC.Buljan所有html标记,如return
            nameemal
            都意识到我是用法语写的(应答器=tag)