繁体   English   中英

从json转换为数组

[英]convert from json to array

我试图让数据显示在表格中。 我不知道我做错了什么,但是当我从我的页面获取数据时,它是一个单个字符数组。 我可以自己解析这个,但我更愿意知道我做错了什么。

我有这个PHP来获取数据:

function BuildViewerCombo($autocomplete) {

    $wholeNumberCombo = array();
    $dbhandle = DB_Connect();       

    $result = QueryForward($dbhandle, SQL_WholeNumbersPartial($autocomplete));

    while($wholeNumber = sqlsrv_fetch_array($result))
        {
            $wholeNumberCombo[] = array($wholeNumber['DocumentNbr'] => 'Number', $wholeNumber['DocumentRevision'] => 'Revision');
        }   


    //close the connection
    sqlsrv_close($dbhandle);

    return $wholeNumberCombo;
}

从这个页面调用

<?PHP 
    include "Scripts/DB_Functions.php5" ;
    include "Scripts/SQL_Viewer.php5" ;

    $wholeNumber = $_GET['wholeNumber'];
    echo json_encode(BuildViewerCombo($wholeNumber));
?>

从这个函数加载

    function toggleDropdown()
    {           

        var wholeNumberData 


        var wholeNumber = document.getElementById('WholeNumber').value;

        if (wholeNumber != '') {
            wholeNumberData = GetData('wholeNumber', wholeNumber);

            var table = document.getElementById("wholeNumberDropdown");

            alert ('WN = ' + wholeNumberData.length);
            alert (wholeNumberData);
            for (var i in wholeNumberData) {
                alert(wholeNumberData[i]); 
            }

            }
        else {
            alert("Please enter a whole number.");
        }

    }

通过调用此函数:

function GetData(getType, param) {

    var http = new XMLHttpRequest();

    http.open("GET", 'ViewerWholeNumbers.php?wholeNumber=' + param, false);
    http.setRequestHeader("Content-type","application/json");
    http.onload = function() {
    }
    http.send('wholeNumber=' + param);
    return http.responseText;
}

返回的数据是:

[{"SS3999":"Number","A":"Revision"},{"SS3999":"Number","11":"Revision"},
{"SS3999":"Number","11":"Revision"},{"SS3999":"Number","11":"Revision"},
{"SS3999":"Number","":"Revision"},{"SS3999":"Number","11":"Revision"},
{"SS3999":"Number","":"Revision"},{"SS3999":"Number","11":"Revision"},
{"SS3999":"Number","11":"Revision"},{"SS3999":"Number","A":"Revision"},
{"SS3999":"Number","11":"Revision"},{"SS3999":"Number","A":"Revision"},
{"SS3999":"Number","11":"Revision"},{"SS3999":"Number","A":"Revision"},
{"SS3999":"Number","":"Revision"}]  

alert ('WN = ' + wholeNumberData.length); 返回546,当我尝试遍历数组时,我得到每个元素的单个字符而不是值。

首先,关联您的关联数组。 你需要改变

array($wholeNumber['DocumentNbr'] => 'Number', $wholeNumber['DocumentRevision'] => 'Revision'); 

array('Number' => $wholeNumber['DocumentNbr'], 'Revision' => $wholeNumber['DocumentRevision']);

您需要它才能访问JSON的元素。 然后,在循环中,您将使用wholeNumberData[i].Number来获取数字,并使用wholeNumberData[i].Revision来获取修订版本。

更新

正如@jeroen指出的那样,您需要JSON.parse()将返回字符串转换为JSON。 在您的GetData函数中,用以下代码替换您的return

return JSON.parse(http.responseText);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM