Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery使用php ajax在选择更改时重新加载div内容_Php_Jquery_Ajax - Fatal编程技术网

Jquery使用php ajax在选择更改时重新加载div内容

Jquery使用php ajax在选择更改时重新加载div内容,php,jquery,ajax,Php,Jquery,Ajax,好的,这是我的代码 portfolio.php <select name="portfolio" id="portfolio_dropdown" class="service-dropdown"> <?php foreach($years as $year){ ?> <option value="<?php echo $year['year']; ?>">

好的,这是我的代码

portfolio.php

            <select name="portfolio" id="portfolio_dropdown" class="service-dropdown">
                <?php foreach($years as $year){ ?>
                   <option value="<?php echo $year['year']; ?>"><?php echo $year['year']; ?></option>
                <?php } ?>
            </select>
        <div class="loading"></div>
        <div id="portfolio">
            <div id="port-cont">
               <?php foreach($portfolios as $portfolio){ ?>
               <div class="video">
                <div class="play">
                    <a href="http://www.youtube.com/v/<?php echo $portfolio['url']; ?>">Play</a>
                </div>
              <iframe src="http://www.youtube.com/v/<?php echo $portfolio['url']; ?>"frameborder="0" allowfullscreen></iframe>
                    <h3><?php echo $portfolio['title']; ?></h3>
                    <p><?php echo $portfolio['text']; ?></p>
               </div>
               <?php } ?>
        </div>
        </div>
我的投资组合控制器文件

if(isset($_POST['year'])){
  include_once "../../system/validation.php";
  include_once "../model/DataBase.php";
  include_once "../model/Display.php";

  $year = integer($_POST['year']);

  $get_portfolio_data = new Display("portfolio");

  $portfolios = $get_portfolio_data->getDataByColumnName("year",$year);

 include_once "../view/themes/default/template/portfolio_data.php";

  exit();
}
我的投资组合文件我第一次用另一个函数得到我的数据,我最后一年的2014年投资组合数据

因此,当我更改年份时,我调用控制器文件以获取与该年份相关的数据

我这里的问题是如何返回我从控制器文件中获得的$Portfolio,这样我就不必像以前那样更改模板文件代码或包含另一个文件

我的意思是我需要重新加载portfolio.php模板内容

我试过这样的东西

$("body").on('change','#portfolio_dropdown',function(){
     var year = $(this).val();

     $.ajax({
       type: "POST",
       url: "catalog/controller/portfolio.php",
       data: "year="+year,
       beforeSend: function(){
         $(".loading").show();
         $("#portfolio").hide();
       },
       success: function(portfolio_data){
         $(".loading").hide();
          $("#portfolio").show().load("portfolio" + " #port-cont");
       }
     });
});
但我不知道如何在不包含另一个模板文件的情况下将新的$Portfolions数据发送到同一个div

事实上,我有点困惑如何正确地做到这一点

因此,我希望您得到了我想要做的:

您可以创建一个单独的portfolio-div.php文件,该文件只包含要替换的代码,并从$.ajax调用中调用它

或者,您可以向portfolio.php添加一个$_GET参数,如?skiptemplate=1,以便在使用该参数调用文件时,从ajax调用文件时跳过周围的模板标记

如果您没有机会更改服务器端代码,则可以再次加载整个模板文件,但只提取port cont部分以替换现有内容。不要使用本身会调用URL的load,而是使用html:

虽然这将插入所有HTML,但不只是端口cont部分


只需将参数传递到html中

我已经完成了portfolio-div.php,因为它包含在我的控制器文件中,但问题是我无法在加载的数据上使用jquery代码,我的portfolio_data.php文件的代码与我的portfolio div中的代码相同,但我不能在新加载的数据上使用jquery函数。这里存在的问题是,当我从控制器文件中包含新模板文件时,我不能在新数据上使用jquery函数
$("body").on('change','#portfolio_dropdown',function(){
     var year = $(this).val();

     $.ajax({
       type: "POST",
       url: "catalog/controller/portfolio.php",
       data: "year="+year,
       beforeSend: function(){
         $(".loading").show();
         $("#portfolio").hide();
       },
       success: function(portfolio_data){
         $(".loading").hide();
          $("#portfolio").show().load("portfolio" + " #port-cont");
       }
     });
});
$("#portfolio").show().html(portfolio_data);
$("#portfolio").html(portfolio_data)