【问题标题】:get ajax data and display on bootstrap modal获取 ajax 数据并在引导模式上显示
【发布时间】:2015-06-18 04:02:27
【问题描述】:

我正在构建一个应用程序来托管餐厅菜单。当单击菜单项时,我想通过 ajax 从我的 api 获取项目的数据并将其显示在引导模式上。

javascript

(function() {
var infoModal = $('#myModal');
$('.modal-toggle').on('click', function(){
    $.ajax({
        type: "GET",
        url: '/api/menu-item/'+$(this).data('id'),
        dataType: 'json',
        success: function(data){
            var item = JSON.parse(data);
            var htmlData = '<ul><li>';
            htmlData += item.name;
            htmlData += '</li></ul>';
            infoModal.find('#modal-body').innerHTML = htmlData;
        }
    });
    infoModal.modal();
});
})(jQuery);

模态触发器

<a class="modal-toggle" data-toggle="modal" data-target="#myModal" data-id="{{{ $item->id }}}"><h5>{{{ $item->name }}}</h5></a>

模态

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-      labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <h4 class="modal-title" id="exampleModalLabel">New message</h4>
  </div>
  <div class="modal-body" id="modal-body"></div>
  <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    <button type="button" class="btn btn-primary">Add to cart</button>
  </div>
</div>

api 响应

{"id":4,"menu_category_id":446,"name":"kunzereichert","description":"Dolores impedit ut doloribus et a et aut.","price":"999.99","created_at":"2015-04-10 05:55:23","updated_at":"2015-04-10 05:55:23"}

当我单击触发器时,会弹出模式并且 ajax 请求出现在我的浏览器网络上,状态代码为 200,但是模式内部 html 没有更新。我知道这里可能有这些问题的文档,但我似乎找不到有帮助的问题。请帮忙

【问题讨论】:

标签: javascript jquery ajax twitter-bootstrap


【解决方案1】:

而不是这个:

infoModal.find('#modal-body').innerHTML = htmlData;

你应该使用这个:

infoModal.find('#modal-body')[0].innerHTML = htmlData;

如果你想坚持全jQuery的方式,那么使用这个:

infoModal.find('#modal-body').html(htmlData);

这是 JSFiddle,使用虚假响应:

https://jsfiddle.net/6o7atqd3/1/

【讨论】:

  • 非常感谢您的意见。不幸的是,这仍然不能解决我的问题:(你能不能保存工作小提琴并给我链接
  • 那么,问题出在您的 AJAX 调用上。给你 JS Fiddle 不会有帮助,因为我将成功更改为错误,因为 AJAX 调用当然会返回错误。如果你能上传你作品的现场演示,我会帮你解决这个问题。
  • 我用 JSFiddle 更新了这个问题,以防你想看看我做了什么。
  • 嗨。我使用的是 AngularJS 而不是 AJAX,目前没有 angular-ui 或 ui-bootstrap 并且面临同样的问题。关于如何使用 Angular 解决这个问题的任何想法,因为直接从 Angular 代码访问 DOM 元素是一种不好的做法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
相关资源
最近更新 更多