2016-11-30 38 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你习惯的方式。