javascript - 获取元素 id 并根据它执行 get 请求

标签 javascript jquery modal-dialog

我使用这个元素来触发模态:

<i data-toggle="modal" id="'.$user->user_id.'" data-target="#modal-default" data-toggle="tooltip" title="Edit" class="fa fa-pencil-square-o"></i>

Javascript:

$('#modal-default').on('shown.bs.modal', function (e) {
  e.preventDefault();
  $('i').on('click', function(){
    id = $(this).attr('id');
  });
  $.ajax({
    method: "GET",
    url: baseURL + 'users/test/view/' + id,
    dataType: "json",
    success: function(data){
      $('#first').val(data.first_name);
      $('#last').val(data.last_name);
      $('#email').val(data.email);
      $('#phone').val(data.phone_number);
    }
  });
});

第一次单击图标时,模式会显示,但不包含任何数据。此外,不会执行对 url 的请求(不会出现在网络中)。控制台告诉我 id 未定义(在包含 url 的行上)。 如果我再次单击它而不重新加载页面,它就会起作用。

有什么办法可以让我在第一次点击时就可以完成这项工作吗?我该怎么办?

最佳答案

当计算以下代码时:

$('i').on('click', function(){
  id = $(this).attr('id');
});

正在声明 id 变量,但只有在用户单击 i 元素后才会填充该变量。

请注意,$.ajax 请求将在声明变量后立即触发,而不是在填充变量后触发。

您可能需要考虑将 $.ajax 调用移至 click 回调内。

关于javascript - 获取元素 id 并根据它执行 get 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47588599/

相关文章:

javascript - 设置属性名称为动态且包含 '.' 的属性值

javascript - tampermonkey 禁用目标站点上的功能

javascript - es6类方法无法访问本地状态?

javascript - jQuery 使用 .scroll(handler) 滚动到一个元素

javascript - Javascript中如何将字符串转换为数组并删除引号?

jQuery ScrollTop 到元素 ID 在 Safari 上不起作用

关闭窗口的Javascript调用

javascript - 使用 vue-js-modal,如何访问传递给模态的数据?

c# - Bootstrap 模式中的 ASP.NET 按钮不触发点击事件

jquery - 使用 jQuery 重置元素样式