2014-06-13 172 views
-1

您好,我有一个小项目,它将显示最近4,6周的新闻。我创建了一个选择框,它会询问最近4,6周的消息。并提交按钮。所以用户从选择框中选择新闻并点击提交按钮,他会得到结果。但我没有得到正确的输出,甚至没有得到任何错误。默认情况下,我不知道为什么输出显示来自数据库的数据。而我的提交按钮甚至没有显示活动。我正在犯一个无法识别的小错误。谢谢。Json结果数据显示不正确

JS文件

$.ajax({ 
      type: "POST", 
      url: "ajax/edit_news.php", 
      dataType : 'json', 
      cache: false, 
      data: {'aktion' : 'edit-news'}, 
      success: function(data){ 
      $('#editnews').html(data.html); 
      } 
     }); 

这里是我的代码:

<?php 
chdir('..'); 
include 'constant/const_system.inc.php'; 
include 'functions/ad_json.inc'; 
include 'functions/ad_formulare.inc'; 
include 'constant/const_system_db.inc.php'; //database file 

$return = array(); 
if(isset($_POST['BtnSubmit'])) 
    { 

     if(($_POST['news'])==4){ 

      $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv 
     FROM ad_news_texte 
     INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news 
     INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id 
     WHERE ad_news.datum_archiv 
     BETWEEN curdate() - INTERVAL DAYOFWEEK(curdate()) +28 
     DAY AND curdate() 
     "; 

      $sql_select=mysql_query($sql); 
      while($row = mysql_fetch_array($sql_select)) { 
       echo $row['headline'] . " " .$row['datum_archiv'] ; 
       echo "<br>"; 
      } 
     } 
     if(($_POST['news'])==6){ 

      $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv 
     FROM ad_news_texte 
     INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news 
     INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id 
     WHERE ad_news.datum_archiv 
     BETWEEN curdate() - INTERVAL DAYOFWEEK(curdate()) +42 
     DAY AND curdate() 
     "; 

      $sql_select=mysql_query($sql); 
      while($row = mysql_fetch_array($sql_select)) { 
       echo $row['headline'] . " " .$row['datum_archiv'] ; 
       echo "<br>"; 
      } 
     } 
    } 
if($param['aktion'] == 'edit-news') 
    { 
     $html = '           
                   <form name="UserInformationForm" method="POST" action="#"> 

               <select name="news"> 
                   <option value="4" '. (($_POST['news']=="4") ? "selected=selected" : "") .'>Show news from last 4 weeks</option> 
                   <option value="6" '. (($_POST['news']=="6") ? "selected=selected" : "") .'>Show news from last 6 weeks</option> 
               </select> 
               <br/><br/> 
             <input name="BtnSubmit" type="submit" value="Submit" > 
                   </form>    


           '; 
     $return = array(
         'status' => 1, 
         'html' => $html 
         ); 

     echo json_encode($return); 
     die(); 
    } 
?> 

而且它这样的显示输出: enter image description here

+0

张贴你在这里的JS代码 – Anish

+0

JS或JSON?我不使用js .. – user3702602

+2

脚本无法回显HTML并回显JSON。如果客户期待HTML,那么JSON就没有意义了。如果客户端期望JSON,那么HTML会搞乱解析。 – Barmar

回答

0

你是返回一个无效json混合使用HTML,这就是为什么它不工作,这里是你需要改变的代码

//Change this in both places 
... 
$news = ''; 
$sql_select=mysql_query($sql); 
     while($row = mysql_fetch_array($sql_select)) { 
      $news .= $row['headline'] . " " .$row['datum_archiv'] ; 
      $news .= "<br>"; 
} 
... 

//and return news like below 

$return = array(
    'status' => 1, 
    'news' = $news 
); 
//Return the json 
header('Content-Type: application/json'); 
exit(json_encode($return)); 
+0

不是它的解决方案我已经试过了 – user3702602

+0

为什么你认为'mysql_fetch_array()'不会工作?它返回数字和列名。 – Barmar

+0

你是对的@Barmar,它给出了两个 – Saqueib

0

试试这个

$.ajax({ 
       type: "POST", 
       url: "ajax/edit_news.php", 
       dataType : 'html', 
       cache: false, 
       data: {aktion: 'edit-news'}, 
       success: function(data){ 
       $('#editnews').html(data.html); 
       } 
      }); 

,做回声HTML。 dont json

like echo $html;。这将修复您的问题

+0

因为你回答它的运行,但它甚至不需要js文件现在如果我使用这个条件:if($ param [ 'aktion'] =='edit-news'),那么什么都没有显示。那么,使用js和ajax这里 ? – user3702602

+0

什么? 。那么你如何回应? – Anish

+0

如果我删除条件,并直接添加回声$ html在底部然后它会回声... – user3702602

0

在文件顶部添加以下行 header('Content-Type:application/json');