当前位置: 首页 > 面试题库 >

为什么jQuery ajax在这里发布两次?

蒋星雨
2023-03-14
问题内容

第一次选择“添加新项”并添加新选项时,以下各项工作正常。第二次(针对按类别区分的其他元素)它将新选项添加​​到所选元素和第一个元素中。这两个元素都必须绑定到addnew。

  <script type="text/javascript">

      $('#upload_form option[value="addnew"]').click(function(){

          // Show modal window
          $('#add-new').modal('show');

          // Get the class

          var Classofentry = $(this).attr("class");

          $('#add-new-submit').on('click', function(){

              // Get new option from text field
              var value = $('#add-new-text').val();
              console.log(value);

              $.ajax({
                    type: "POST",
                    url: "<?php echo site_url(); ?>main/change_options",
                    data: {new_option: value, new_option_class: Classofentry},
                    dataType: "html",
                    error: errorHandler,
                    success: success
                  });

              function success(data)
              {

                  $('#'+Classofentry).append("<option value='" + data + "'selected=\"selected\">" + data + "</option>"); 
                  //alert(data);

                  //alert('Success!');

              }

              function errorHandler()
              {
                  alert('Error with AJAX!');
              }

              $('#add-new').modal('toggle');

           });
      });

  </script>

奇怪的是,它似乎两次遍历了ajax帖子。我想它正在查找所有“
addnew”值(到目前为止有2个,还会有更多)。我怎样才能只用指定的类来对待元素?希望这是有道理的。


问题答案:

感谢您的回复!我找到了一种方法,可以通过保留嵌套的点击但不绑定第二个点击来使其正常工作。我无法获得建议的解决方案(使所有功能都嵌套)正常工作。当它们没有嵌套时,似乎没有办法使第二次点击起作用。我不知道为什么。在调用ajax的函数中还必须具有success和errorHandler函数。这是代码(与上面的问题相同,但在第二个嵌套单击中包含unbind语句):

  <script type="text/javascript">

        var Classofentry = '';

        $('#upload_form option[value="addnew"]').click(function(){

          // Show modal window
          $('#add-new').modal('show');

          // Get the class
          var Classofentry = $(this).attr("class");
          console.log(Classofentry);Thanks

        $('#add-new-submit').on('click', function(){

          // Get new option from text field
          var value = $('#add-new-text').val();
          console.log(value);

          $.ajax({
                type: "POST",
                url: "<?php echo site_url(); ?>main/change_options",
                data: {new_option: value, new_option_class: Classofentry},
                dataType: "html",
                error: errorHandler,
                success: success
              });

          $('#add-new-submit').unbind('click') // <-------------- The answer!!!!!
          $('#add-new').modal('toggle');


          function success(data)
          {

              //$('#animal_species').append("<option value='" + data + "'selected=\"selected\">" + data + "</option>"); 
              $('#'+Classofentry).append("<option value='" + data + "'selected=\"selected\">" + data + "</option>"); 
              //alert(data);

              //alert('Success!');

          }

          function errorHandler()
          {
              alert('Error with AJAX!');
          } 
        });
        });

  </script>


 类似资料:
  • 问题:给您两个非空链表,表示两个非负整数。数字按相反顺序存储,每个节点包含一个数字。将这两个数字相加,并将其作为链表返回。 您可以假设这两个数字不包含任何前导零,除了数字0本身。 下面是我在JAVA中对这个问题的解决方案: 然而,为什么代码必须是 ,而不仅仅是:“listNode l3=new ListNode(0);”我知道这是错误的。如果我使用此代码,我的答案将返回[]。我不明白为什么会这样?

  • 问题内容: 我应该开发一个简单的SFTP。 一切都进行得很好,直到我(在本例中)没有编写全部为止。可以请我解释一下,为什么系统挂在我身上吗? 服务器端: 客户端: 问题答案: 您的循环一直运行到流结束,但是对等方永远不会关闭套接字。该协议似乎要求打开套接字以供其他命令使用,因此您必须调整它的这一部分以包括一个长度字前缀,以便您知道要复制多少字节。 问题不是关于不写所有字节,而是关于阻塞in 。

  • 测试代码为: 测试代码为: 你知道怎么了吗?

  • 我遇到JSON解析错误。我的代码如下: 我从我的检查中得到以下错误: 由于:com,无法分析JSON。谷歌。格森。JsonSyntaxException:java。lang.IllegalStateException:应为BEGIN\u对象,但在第1行第2列为BEGIN\u数组 对于我试图读取的JSON,如果成功,我的应该返回5。 我做错了什么?

  • 这是我的线程: 它得到一个上限和下限以及一个在所有线程上共享的结果。 这是我的测试类:

  • 问题内容: 我刚读 ISO / IEC 9899:201x委员会草案-2011年4月12日 在其中我发现5.1.2.2.3程序终止 这表示如果您未在中指定任何return语句,并且如果程序成功运行,则main的右大括号}将返回0。 但是在下面的代码中,我没有指定任何return语句,但是它没有返回0 编译 问题答案: 该规则是在C标准的1999版本中添加的。在C90中,返回的状态未定义。 您可以通