2017-04-18 97 views
0

我有一個html文件中的表單,它將數據發送到php文件。該PHP文件從數據庫中選擇,將結果轉換成json文件並將其發送回html文件。從html獲取php生成的json

我想知道如何從php獲取json;我確實得到了答覆(從檢查菜單中的網絡選項卡),但我不知道如何得到它(用它回顯/提醒/製作圖表)。提前致謝!

這是我的代碼來發送數據:

<script type="text/javascript"> 
    $(function() { 
     $(".datepicker").datepicker({ 
      minDate: new Date(2015, 8 - 1, 25), 
      maxDate: "0" 
     }); 
    }); 

$(function() { 
    // On form's submit, takes both input's values... 
    $('form').on('submit', function (e) { 
     var from = $("#from").val(); 
     var to = $("#to").val(); 
     // ...to compare them and displays an error if "to" is smaller than "from" 
     if(Date.parse(from) > Date.parse(to)){ 
      alert("Invalid Date Range"); 
     } 
     else{ 
      e.preventDefault(); 
      $.ajax({ 
       type: 'post', 
       url: 'classes/Select.php', 
       data: $('form').serialize(), 
       success: function() { 
        alert('data sent'); 
       } 
      }); 
     } 
    }); 
}); 
</script> 

這是PHP的一部分,使JSON(左出所有的MySQL的部分,這樣的):

while ($arr = $query->fetch(PDO::FETCH_ASSOC)) { 
    echo json_encode($arr); 
+0

https://stackoverflow.com/help/mcve – julekgwa

+0

您是否嘗試過使用json_encode()?你能在這裏寫你的代碼嗎? –

+0

您需要向我們展示您的情況的示例代碼。 –

回答

1

由於您使用在你的PHP循環,創建一個數組將保持結果,當循環結束時用json_encode回顯結果;

$results = []; 
while ($arr = $query->fetch(PDO::FETCH_ASSOC)) { 
    $results[] = $arr; 
} 
echo json_encode($results); 

然後,在JavaScript

$.ajax({ 
     type: 'post', 
     url: 'classes/Select.php', 
     data: $('form').serialize(), 
     success: function(data) { 
      var results = JSON.parse(data); // convert the results to json 
      console.log(results); 
     } 
    }); 
+0

它的工作原理!可能是一個愚蠢的問題,但爲什麼我必須改變我的PHP代碼?只有從json文件中創建對象? – Newwt

+0

@Newwt所以數據可以兼容JavaScript和PHP。不要忘記將其標記爲答案。 – julekgwa

+0

完成,謝謝! – Newwt

1

在你javascript ajax調用代碼,您可能會獲得成功:鍵。嘗試:

success: function(data) { console.log(data); } 
+0

不,不起作用。它會記錄我發送的數據,而不是我收到的數據。 – Newwt

+0

你的代碼在帖子中有成功:function()沒有'數據'在括號中 – delboy1978uk

1

如果你得到一個JSON字符串使用json_decode($ JSON),你得到的價值,你想:

$json = '{"key-example": 12345}'; 

$obj = json_decode($json); 
print $obj->{'key-example'}; // 12345 
+0

我已經做了,事情是在html端,我不知道該怎麼做才能獲得php生成的json 。 – Newwt

+1

做一個ajax調用並打印響應數據後,將其轉換成JSON與:JSON.parse(data) – Slaiv206

+1

是的,現在得到它解決,謝謝! – Newwt