jQuery JSON returning undefined

jQuery JSON returning undefined

本文关键字:undefined returning JSON jQuery      更新时间:2023-09-26

我有数据从我的php json在这个形式:

string(170) "[{"id":"3","Name":"Kontrahent#322","NIP":"753","Adress":"Wiosenna29","PostCode":"20-201","City":"Olkusz","Phone":"12312312","Email":"jakub@edu.pl","Value":"0"}]"

和我的功能:

function showUser(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else { 
         var val = $('#test').val()       
         var id = $('#clientsname option').filter(function() {
            return this.value == val;
        }).data('id');
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
                var data = xmlhttp.responseText;
                alert(data[0].Name);
            }
        }
        xmlhttp.open("GET","getclients/"+id);
        xmlhttp.send();
    }
}  

警报(数据[0]. name);或警报(data.Name);返回未定义。console.log(数据);返回:

string(141) "[{"id":"1","Name":"Kontrahent #1","NIP":"735256985","Adress":"","PostCode":"","City":"","Phone":"777555888","Email":"e@mail.pl","Value":"0"}]"

我不知道我的剧本出了什么问题。有人能帮我吗?

您需要使用JSON.parse方法将响应解析为JSON,因为xmlhttp.responseText只是一个字符串:

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        var data = JSON.parse(xmlhttp.responseText);
        alert(data[0].Name);
    }
}
演示:

http://plnkr.co/edit/LygRQEu89LnQXW6TWDMa?p=preview

xmlhttp.responseText返回文本。如果要解析JSON,请使用JSON.parse(xmlhttp.responseText)。因此

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        // var data = xmlhttp.responseText;
        var data = JSON.parse(xmlhttp.responseText);
        alert(data[0].Name);
    }
}

Uncaught SyntaxError: Unexpected token s

,

<>之前的字符串(170)"[{" id ":"3","名字":"Kontrahent # 322","捏":"753","地址":"Wiosenna29"、"邮政编码":"20 - 201","城市":"Olkusz","电话":"12312312","电子邮件":"jakub@edu.pl"、"价值":"0"}]"之前

不是JSON。这看起来像PHP中的print_r。如果您有一个有效的JSON字符串,请使用echo,例如在PHP中使用json_encode()。有效的JSON应该是这样的:

[{"id":"3","Name":"Kontrahent#322","NIP":"753","Adress":"Wiosenna29","PostCode":"20-201","City":"Olkusz","Phone":"12312312","Email":"jakub@edu.pl","Value":"0"}]

您的json数据不正确。

$result = array("id"=>"3","Name"=>"Kontrahent#322","NIP"=>"753","Adress"=>"Wiosenna29","PostCode"=>"20-201","City"=>"Olkusz","Phone"=>"12312312","Email"=>"jakub@edu.pl","Value"=>"0");
return json_encode($result);

从json检索json数据。解析方法

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        var data = JSON.parse(xmlhttp.responseText);
        alert(data[0].Name);
    }
}