无法使用ajax / jquery显示json对象

时间:2013-05-17 05:21:09

标签: jquery ajax json

我对JSON知之甚少,并且从来没有能够将带有JSON的内容返回到ajax并使用jquery显示它,尽管我尝试了很多。
我想要做的是,使用JSON发送数据加载用户的个人资料时,对象为ajax。

[更新] php代码

<?php include(dirname(__FILE__). '/../script/config.php');
session_start();
$id = $_POST['u_search'];
$email = $_SESSION['Email'];

foreach($pdo->query("SELECT * FROM Users WHERE ID='$id'") as $row) {
    //$firstname = $row['FirstName'];
    //$lastname = $row['LastName'];
    $pic = $row['Pic'];
    $id = $row['ID'];
    $u_email = $row['Email'];
}
$firstname = "Jason";
    $lastname = "Born";
    $data = array("success"=> true,"inpt"=>"<p>Hello there! I am " . $firstname . " " . $lastname . "</p>");
    echo json_encode($data);
header("Content-Type: application/json");)
?>

<?php $pdo = null; ?>

更新了Ajax

function op_prof(obj) {
    var value = obj.id;
    var dataString = "{'u_search':'"+value+"'}";
    $("#co_profile").show();
    $(".searchbox").val('');
    $("#usr_suggest").hide();

    $.ajax({
    type: "POST",
    url: '/script/profile.php',
    dataType: 'json',
    data: dataString,
    cache: false,
    success: function(data) {
        alert(console.log(data));
        alert(data);
        $("#co_profile").html(data.inpt).show();
        location.hash = 'profile' + 'id=' + dataString;
    }
  });
};

编辑:当我使用dataType: 'json'时,success中的任何内容都没有运行,但当我将其删除时,它们就会运行。

编辑:当我使用datatype: 'json'而不是dataType: 'json'时,success中的代码会运行。我使用alert(console.log(data));,它说“未定义”

编辑:我正在使用//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js

3 个答案:

答案 0 :(得分:1)

如果你输入数据类型:json意味着你必须发送数据:“”以json字符串格式,甚至在服务器端变量名称应该匹配,以便它可以读取你发送的值。

示例:

datatype:'json',
data : JSON.stringify({'u_search':'value'})

使用JSON.js文件将对象转换为字符串。

答案 1 :(得分:1)

var dataString = "{'u_search':'"+value+"'}";

dataType: 'json',
data: dataString,

修改

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

答案 2 :(得分:0)

试试这个。

$.post("/script/profile.php",{dataString:dataString},function(data){
                alert(console.log(data));
    alert(data);
    $("#co_profile").html(data.inpt).show();
    location.hash = 'profile' + 'id=' + dataString;
            }, "json");   // USing JSON here for the returned value from server...

在profile.php文件中,您必须解码json格式。请记住在名为dataString

的变量中收集已解码的json值