如何使用 ajax 获取隐藏在模态中的输入类型的值


how to Get the value of input type hidden in modal using ajax

美好的一天..
我有模态,在模态内我有div 类

<div id="user-details-content" class="modal-body">
   ...
</div>

我使用 ajax 在该模态中提供内容。
这是提供的内容:

<div id="hidden" class="hidden">
   <input type="hidden" name="id" class="id" id="id" value="1">
   <input type="hidden" value="email@email.com" class="email">
</div>

现在我尝试使用此 ajax 获取该输入类型="隐藏">

var id = $(this).parents('#user-details-content').find('.id').val();

但它在我的控制台中返回未定义.log

关于如何获取输入类型="隐藏"和值的任何建议?

编辑 - 这是我的 ajax 函数

function inquiryId(){
    var id = $(this).parents('#user-details-content').find('.id').val();
    console.log(id);
    $.ajax({
        url: 'php_file.php',
        type: 'POST',
        data: { id: id,
        },
        dataType: 'json',
        success: function(result){
            console.log(result);
        }
    });
}
可能会出现

此问题,因为您在加载 DOM 后加载了 html。我想你有某种事件侦听器吧?

解决方法可能是执行以下操作:

$(document).on('some_event', '#your_css_selector', function(e){
    // do your stuff here
});

只想获取输入类型=隐藏值?

JQuery 可以获取值,无论它是隐藏的还是显示的。

$('#id').val();
$('.email').val();

这没关系。

从代码行:

var id = $(this).parents('#user-details-content').find('.id').val();

如果您知道input[type="hidden"]的确切idclass属性,我可以建议使用$("#id").val()$(".email").val()。下面是一个片段来展示我的建议,希望对您有所帮助。

$(function(){
  $("button").click(function(event) {
    buttonSubmit_OnClick();
  });
});
function buttonSubmit_OnClick() {
  var message;
  message = "Hello " + $("#id").val() + "! ";
  message += $(".email").val();
  
  $("p").html($("p").html() + "<br>" + message);
  /* $.ajax() code-block goes here */
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hidden" class="hidden">
  <input type="hidden" name="id" class="id" id="id" value="1">
  <input type="hidden" value="email@email.com" class="email">
  <button>Click me!</button><!-- this is for demo! -->
</div>
<p></p><!-- this is for demo! -->

作为旁注

为了更好地优化客户端代码:

  1. $(this)强大,但也是一个通配符。 jQuery总是在更新this,所以,this可能并不总是你所期望的。最好只在真正需要时才使用,当你这样做时,将其引用存储在变量中。记住,权力越大,责任越大

  2. 基于 ID 的选择器要快得多,因为它们使用浏览器原生的document.getElementById()来处理,而不是通过 jQuery 嘶嘶声选择引擎。

  3. 如果可能的话,要具体。避免使用通用选择器,例如 .children().parents()

这是关于优化jQuery选择器的更有说服力的读物。