2014-03-04 109 views
0

好了,現在我在這裏有一個奇怪的問題,有時還給我學會了如何編碼和計算器正確地在這裏進行解碼JSON數組,但現在我有我的GoDaddy的服務器上的一個奇怪的問題,我無法理解,也許我可能會讓我輸入錯誤或代碼中的某處,但我真的無法說出這裏有什麼問題。該代碼可以在我的本地主機上正常工作,但是當我上傳時,也不是我的godaddy服務器。問題在PHP解碼JSON數組

這裏的代碼基本上是應該通過一個id作爲JSON到PHP服務器,然後應該執行使用id作爲參數的查詢。

這裏是jQuery代碼:

<script text="text/javascript"> 
    $(document).ready(function() { 
     $('#download').click(function(e) { 
      // e.preventDefault(); 
      var tid = $('#id').val().trim(); 

      var data = { 
       ID:tid 
      }; 
      $.ajax({ 
       type: "POST", 
       url: "xxxxx-xxxxxxx.php", 
       data: { 
        data: JSON.stringify(data) 
       }, 
       dataType: "json", 
       success: function(response) { 

       } 
      }); 
     }); 
    }); 
</script> 

,這是PHP代碼:

<?php 
    if (isset($_POST['data'])) 
    { 
     $Data = $_POST["data"]; 
     $arr = json_decode($Data); 
     $id = $arr->ID; 

     $sql = $pdo->prepare("update ********** set ******** = ******** + 1 where id=:id"); 
     $sql->bindValue("id", $id, PDO::PARAM_INT); 
     $sql->execute(); 

     unset($_POST['data']); 
    } 
?> 

現在我用我的瀏覽器控制檯中檢查值發送到服務器,它是。我還檢查了服務器上的$ _POST ['data']是否包含使用var_dump的任何數據,並且它確實有我想要的數據。

+0

你有機會獲得一個錯誤日誌服務器上?那將是一個好的開始。這可能是您正在使用的功能在您的服務器所使用的PHP版本上不可用。特別是使用GoDaddy共享託管計劃時,PHP的版本可能會過時。 – BOMEz

+2

你不需要使用json.stringify進行編碼 - 它已經是一個JavaScript對象。然後你可以從你的PHP文件中刪除json_decode。 –

+0

只是按原樣發送數據。不要使用stringify。你會直接在你的post數組中獲取數據。 – hamobi

回答

0
在阿賈克斯

設置的內容類型contentType: "application/json",

這樣:

$.ajax({ 
      type: "POST", 
      url: "xxxxx-xxxxxxx.php", 
      data: { 
       data: JSON.stringify(data) 
      }, 
      contentType: "application/json", 
      success: function(response) { 

      } 
     }); 

,並在PHP中使用:

$json = file_get_contents('php://input'); 
$data = json_decode($json); 
+0

我很好奇,什麼是此行 「$ JSON =的file_get_contents( 'PHP://輸入');」意味着什麼? –

+0

發送原始JSON時(因爲它似乎你想要做),你可以不依賴於$ _POST陣列上被填充,所以你需要從文件進行讀取,來代替。 http://www.php.net/manual/en/wrappers.php.php – andrew

+0

是的,我試過你的解決方案,但它沒有工作,也許我做錯了,但thankx無論如何,我已經得到了答案,: ) –