$ ajax call calling' undefined'结果

时间:2017-05-18 15:01:52

标签: php jquery mysql ajax

我无法将数据显示在页面中,尽管它出现在console.log中。

这是我对api.php的查询,页面在同一个文件夹中。

$Sub = $_GET['id'];
$stmt = $conn->prepare("SELECT id, name FROM variables WHERE id=:id");
$stmt->bindParam(':id', $Sub, PDO::PARAM_STR);
try {$stmt->execute();} catch(PDOException $e){ echo errorHandle($e);}
$rs2 = $stmt->fetch(PDO::FETCH_ASSOC);
echo json_encode($rs2);

工作正常并产生

{"id":"1","name":"James"} on api.php

这是.js和身体

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js">
</script>
</head>
<body>
<p><div id="shoot">shoot</div>

<div id="output"></div>
   < script >
   $(document).ready(function() {
   $("#shoot").click(function() 
    {
    $.ajax({
      type: "GET",
      url: 'api.php?id=1',          
      data: "?id=1",      
      dataType: 'json',      
      success: function(data)     
 {
       var id = data[0]; 
      var vname = data[1];
      $('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname); 
        console.log(data);
    } 
    });
  }); 
 });
  </script>         
        </body>
        </html>

我回来了

  

id:未定义的名称:undefined

我已尝试过$ ajax和其他任何更改,但页面中没有显示任何内容。 帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

需要注意的几件事

  1. 您在设置网址参数时静态设置ID,同时也将其作为参数传递给data。您应该在url参数中引用该文件,并传递data参数中的所有相关值。
  2. 数据参数前面有无效?
  3. 实际问题:您获得了返回的关联JSON对象,而不是数组,因此您需要使用data.id而不是data[0]来访问它。
  4. AJAX调用看起来应该是这样的。

    $.ajax({
          type: "GET",
          url: 'api.php',          
          data: {id:1},      
          dataType: 'json',      
          success: function(data) {
              var id = data.id; 
              var vname = data.name;
              $('#output').html("<b>id: </b>"+id+"<b> name: </b>"+vname); 
              console.log(data);
         } 
    });
    

    这假定您已设置PHP标头以使用

    将其返回为JSON
    header("Content-Type: application/json");
    

    使用echo json_encode(..)

    data参数中传递的值可以通过多种方式进行格式化,在此示例中我选择了{id:1},但"id=1"也是有效的。< / p>

答案 1 :(得分:0)

在您的$ .ajax调用中,不传递数据:&#34;?id = 1&#34;。通过这样做,您对响应进行了硬编码。所以删除该行。这应该可以解决回复AJAX的问题。

此外,成功:功能(数据),您获取的数据需要以这种方式访问​​:

data.id和data.vname。