Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从json转换为数组_Javascript_Php_Json - Fatal编程技术网

Javascript 从json转换为数组

Javascript 从json转换为数组,javascript,php,json,Javascript,Php,Json,我正在尝试获取要在表中显示的数据。我不知道我做错了什么,但是当我从我的页面中获取数据时,它是一个由单个字符组成的数组。我可以自己分析,但我更想知道我做错了什么 我有这个php来获取数据: function BuildViewerCombo($autocomplete) { $wholeNumberCombo = array(); $dbhandle = DB_Connect(); $result = QueryForward($dbhandle, SQL

我正在尝试获取要在表中显示的数据。我不知道我做错了什么,但是当我从我的页面中获取数据时,它是一个由单个字符组成的数组。我可以自己分析,但我更想知道我做错了什么

我有这个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 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'); 

为了访问JSON的元素,您需要它。然后,在循环中,使用
wholeNumberData[i].Number
获取数字,使用
wholeNumberData[i].Revision
获取修订

更新

如前所述,您需要
JSON.parse()
将返回字符串转换为JSON。在
GetData
函数中,将
return
替换为以下内容:

return JSON.parse(http.responseText);

您可以使用json_decode()函数将json转换为arrayYeah我同意,返回的数据是颠倒的。它应该是{“Number”:“SS3999”…而不是相反around@Sel:json_decode是一个php函数,我需要javascript中的数据。您需要
json.parse()
来解析字符串并将其转换为javascript中的对象数组。谢谢,我翻转了它。但是,当尝试访问这样的成员时,我会得到“未定义”:警报('Number='+wholeNumberData[1].Number);
array('Number' => $wholeNumber['DocumentNbr'], 'Revision' => $wholeNumber['DocumentRevision']);
return JSON.parse(http.responseText);