【问题标题】:Css is not being applied when html is loaded via ajax call通过ajax调用加载html时未应用Css
【发布时间】:2020-05-09 19:59:23
【问题描述】:

我的控制器代码是

  public function search_results()
  {
    $data['product_select'] = $this->input->post('product_select');
    $this->load->view('public/search_results');
  }

而js代码是

   $('#serch_btn').click(function(){
   let product_select = $("#product_select").val();
   console.log(product_select);
   $("#hide_content").hide();
   $.ajax({
       url:'<?php echo base_url() ?>public_controller/search_results',
       method:'post',
       dataType:'html',
       data:{product_select:product_select},
       success:function(data) {
        $('#show_content').html(data);
       }
     });
   });

html 正在加载,但它的样式未应用,如 theme.css 等。我知道加载页面时会加载 css,因此当我进行 ajax 调用时,css 不适用于通过 ajax 调用加载的 html。但我在其他项目中做过这个,效果很好。在这我遇到了麻烦。我该如何克服这个问题

【问题讨论】:

  • 您是否希望从页面发送到 ajax 的 css 文件会被加载?如果是这样,jQuery ajax 会删除头部的任何内容,您需要在主页中包含所有需要的样式
  • 不,我想要的是在整个页面中更改一个 div。这样当我点击搜索按钮时,就会显示特定的 div。和 html 我显示正常,但它的 css 没有被应用
  • 没有minimal reproducible example,我们不知道为什么,只能猜测,但有很多可能性
  • 好的建议我任何解决方案
  • 这就像试图回答......“为什么我的车无法启动?”。太多的未知数而没有更多的细节

标签: javascript css ajax codeigniter model-view-controller


【解决方案1】:

您需要将控制器函数 search_results() 的视图作为数据返回(回显),以便在 ajax 成功函数中接收它,从而操作您的 DOM - 无需重新加载页面。

现在您正在加载一个新视图,即没有您之前可能与此页面一起加载的任何其他视图,并且您可能已经加载了 css 文件。

您需要通过 ajax 将其作为数据发送回,而不是在控制器中加载视图:

  public function search_results()
  {
    $data['product_select'] = $this->input->post('product_select');
    echo $this->load->view('public/search_results', $data, true);
  }

Returning views as data

调试提示:在你的 ajax 成功中放置一个 alert() 并查看它是否被触发

P.S.:如果您在此视图文件中有样式表,它将是级联中的最后一个并且仅适用于此视图。

【讨论】:

  • 我正在获取 html,这意味着方法将视图作为数据返回,但未应用 html css。比如 bootstrap 和 theme.css
  • 那么,如 cmets 中所述,CSS 规则可能对新元素不够具体。在 custom.css 中创建一个自定义规则并检查它,以调试或应用视图中的
  • 只有一个问题,我在这个项目中做了同样的过程,效果很好
  • 也许我遗漏了什么或者有一些错误。如果有错误 html 不应该被加载,我尝试同上方法使其工作但没有。
  • 然后加载在 search_results() 中工作的视图,并查看结果
猜你喜欢
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多