2015-07-21 65 views
0

我已經創建了一個簡單的html文件與固定的json對象。我想將對象帶到php文件text.php中,對其進行編碼,解碼,將其打印到php文件中,然後將其打印回html文件中。 HTML文件:ajax和json對象編碼和解碼成php腳本

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
</head> 
<body> 
    <script> 
     var key=45; 
     var value=65; 
     var rated = {"key" : key , "value" : value}; 
     var rated_encoded = JSON.stringify(rated); 

     $.ajax({ 
      type: "POST", 
      url: "text.php", 
      dataType:"json", 
      data: { 
       "rated" : rated_encoded 
      }, 
      //success: function(data) { 
       //document.write(data); 
      //} 
     }); 
    </script> 
    <script> 
     $(document).ready(function(){ 
      $("button").click(function(){ 
       $("#div1").load("text.php"); 
      }); 
     }); 
    </script> 
    <div id="div1"><h6>Result</h6></div> 

    <button>Get External Content</button> 

</body> 
</html> 

text.php代碼:

<?php 
if(isset($_POST["rated"])){ 
    $rated_json = $_POST["rated"]; 
    $JSONArray = json_decode($rated_json, true); 
    if($JSONArray !== null){ 
     $key = $JSONArray["key"]; 
     $value = $JSONArray["value"]; 
    } 
    echo json_encode($rated_json); 
} 
?> 

echo json_encode($rated_json); 
在text.php的最後一行

是行不通的。我不知道我們是否無法打印編碼的東西或其他東西。代替這一行,即使我輸入echo「hello」,它不會打印在php文件中。如果有什麼方法可以在text.php中打印$ JSONArray變量,那就太好了。如果我可以在html文件本身中編碼json對象,發送到php腳本,在那裏解碼,然後發回並打印在html文件中,會更好。對不起,如果這個問題措辭不當或是非常基本的。另外,請慢一點並解釋代碼。

+0

我還沒有試過。但是,即使我使用echo「hello」,也不會打印任何內容。 – RaviTej310

+0

對不起,你試試這個? $ json = json_encode($ rated_json); echo $ json; – Netzach

+0

我不知道jQuery在這方面的內部工作原理,但是當你用[XMLHttpRequest.send()]發送一個JSON字符串(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send()),數據不在'$ _POST'中。當你調用'var_dump($ _ POST);'和'var_dump(file_get_contents('php:// input'));'? –

回答

0

您需要添加的contentType: 「應用/ JSON的;字符集= UTF-8」,

$.ajax({ 
      type: "POST", 
      url: "text.php", 
      dataType:"json", 
      contentType: "application/json; charset=UTF-8", 
      data: { 
       "rated" : rated_encoded 
      }, 
      //success: function(data) { 
       //document.write(data); 
      //} 
     }); 

具體的數據類型的選擇僅僅是用於解析接收到的數據。

如果仍然沒有工作,補充一點:過程數據:假

+0

如果你發送JSON,你還需要傳遞一個JSON字符串作爲數據,jQuery不會轉動對象轉換成JSON格式。 – Stryner

+0

這就是爲什麼我通過評級編碼 – RaviTej310

+0

@Netzach,仍然沒有工作。我都厭倦了。 – RaviTej310