2014-06-13 235 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');