2016-11-30 35 views
0

昨天我用jQuery編寫了我的第一個代碼,使用$.ajax將變量從Javascript傳遞到PHP腳本,所以我絕對不是專家。從PHP腳本使用jQuery檢索JSON數組

今天我試圖將一個數組作爲PHP查詢的結果傳遞給HTML文件;他們建議我使用JSON,因此我收集了所有的信息,並試圖編寫一個代碼,顯然,這不起作用。

目的是傳遞這個數組並通過jQuery訪問這些值,並分別在HTML頁面的不同部分打印它們。問題是AJAX調用返回error:(在控制檯中顯示:「失敗」)。

任何人都可以幫助我瞭解哪個是問題?

HTML文件

<script> 
$(document).ready(function(){ 
    $("#menuSelect").on("click", function(){ 
     var str = $("#menuSelect").val(); 
     $.ajax({ 
      type: "POST", 
      url: "tester2.php", 
      data: { value: str }, 
      dataType:"Json", 
      success: function(data){ 
       var a = $.parseJSON(data); 
       $("#txt").html(a.name); 
      }, 
      error: function() { 
       console.log("Failed"); 
      } 
     }); 
    }); 
}); 
</script> 

PHP文件

function provaAJAX($value) { 
switch ($value) { 
    case "0": 
     $query = dbSelect("name, lvl", "productsma", "id=1", "", "", "Error"); 
     header('Content-Type: application/json'); 
     echo json_encode($query); 
     break; 
    case "1": 
     $query = dbSelect("name, lvl", "productsma", "id=2", "", "", "Error"); 
     header('Content-Type: application/json'); 
     echo json_encode($query); 
     break; 
    case "2": 
     $query = dbSelect("name, lvl", "productsma", "id=3", "", "", "Error"); 
     header('Content-Type: application/json'); 
     echo json_encode($query); 
     break; 
} 
} 

$value = $_POST["value"]; 
provaAJAX($value); 
+0

控制檯還有什麼? –

+0

@u_mulder不幸的是,沒有別的。剛剛寫入失敗,並在HTML文件 – Brigo

+0

中的console.log(「失敗」)的對應行應該有一些關於您對'tester2.php'的請求的數據仔細檢查。 –

回答

0

我相信你的問題是,PHP是設計用來處理URL編碼形式的數據,而不是JSON。所以,如果你打算JSON數據傳遞給PHP腳本,您不能使用$_POST,因爲這僅僅是URL編碼的表單數據的解碼,你必須做像

$data = file_get_contents('php://input'); 
$_POST = json_decode($data, true); 

的東西在這一點上,你可以訪問$ _POST你習慣的方式。