使用AJAX将变量发送到PHP,接收JSON

时间:2016-12-07 15:48:19

标签: javascript jquery json ajax

使用以下jQuery,我如何读取返回的JSON的值?凭借它如何,jQuery甚至无法运行,因为出现了错误:alert("A" + obj.sender[0]);

var session_id = $(this).find(".session_id").val();
    $.ajax({
        type: 'POST',
        url: '../php/read.php',
        dataType: "json",
        data: {sesh_id: session_id},
        success: function (response) {
            var obj = jQuery.parseJSON(response);
            alert("A" + obj.sender[0]);
        },
        error: function (response) {
            alert("Err: " + response.status);
        }
    });

回复的价值是:

[{
    "sender":"email@example.com",
    "details":"details1",
    "date":"2017-01-04 16:11:04"
},
{
    "sender":"someone@example.com",
    "details":"details2",
    "date":"2017-01-04 16:11:05"
},
{
    "sender":"blah@example.com",
    "details":"details3",
    "date":"2017-01-04 16:11:06"
}]

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您的索引访问者位置错误,因为obj是一个数组,而不是sender属性,所以它应该是obj[0].sender

您也不需要在响应上调用JSON.parse(),因为jQuery会在您指定dataType: 'json'时自动为您执行此操作。试试这个:

$.ajax({
    type: 'POST',
    url: '../php/read.php',
    dataType: "json",
    data: { sesh_id: session_id },
    success: function (response) {
        console.log("A" + obj[0].sender);
    },
    error: function (response) {
        console.log("Err: " + response.status);
    }
});

最后请注意,console.log()在调试alert()时更为可取,因为它不会强制数据类型。