我如何从PHP返回索引二维数组到JavaScript
How can I return indexed two-dimensional array from PHP to JavaScript
我需要从PHP返回索引二维数组到JavaScript。这几天我一直在寻找解决办法。在客户端,我有On -change事件(在选项选择)调用JavaScript函数执行一个php文件。这个php文件从csv文件创建一个二维数组,用json编码该数组。然而,当我试图在JavaScript中访问数组的元素时,它给了我"未定义"。HTML文件:
<head>
<script type="text/JavaScript">
var d;
function sendIt() {
if (d) document.body.removeChild(d);
var xmlhttp;
var state=arguments[0].options[arguments[0].selectedIndex].value
d = document.createElement("script");
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) //ready
{
document.getElementById("arrayresult").innerHTML=xmlhttp.arrayFromPhp;
}
}
xmlhttp.open("GET","recordsbystate.php?state=" + state,true);
xmlhttp.send();
d.type = "text/javascript";
document.body.appendChild(d);
}
</script>
</head>
<body>
<select name="state" onChange="sendIt(this)">
<option selected="selected">Select State</option>
<option value="CA">CA</option>
<option value="CO">CO</option>
<option value="MA">MA</option>
<option value="TX">TX</option>
</select>
<div id="arrayresult"></div>
</body>
</html>
PHP文件:$file = 'event_submission.csv';
$data2DArray = array();
$state = $_REQUEST['state'];
echo($state), "'n'n";
//create table with header and column names
print('<table align="left" width="430">');
print('<tr><th colspan="4">AOM DAY 2014</th></tr>');
print('<tr><th>Company</th><th>City</th><th>State</th><th>Event Date</th><th>Event Details</th></tr>');
$delimiter = ",";
if (($handle = fopen($file, "r")) !== FALSE) {
$i = 0;
while (($lineArray = fgetcsv($handle, 10000, $delimiter)) !== FALSE) {
if ($lineArray[7] == $state) {
for ($j=0; $j<count($lineArray); $j++) {
$data2DArray[$i][$j] = $lineArray[$j];
}
print('<tr><td>'.$data2DArray[$i][0].'</td><td>'.$data2DArray[$i][6].'</td><td>'.$data2DArray[$i][7].'</td><td>'.$data2DArray[$i][10].'</td></tr>');
}
$i++;
}
fclose($handle);
}
$json = json_encode($data2DArray);
echo 'var arrayFromPhp = ' . $json . ';';
return true;
?>
有什么建议吗?请帮助…
您实际上并没有返回JSON。当你做echo 'var arrayFromPhp = ' . $json . ';';
时,它不再是有效的JSON,只是回显JSON没有其他垃圾,并将其转换为客户端对象。
$json = json_encode($data2DArray);
echo $json;
javascript中是
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("arrayresult").innerHTML = xmlhttp.responseText;
}
将JSON解析为javascript对象,您可以使用
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var obj = JSON.parse( xmlhttp.responseText );
document.getElementById("arrayresult").innerHTML = obj.someKey;
}
相关文章:
- 作为一个二维数组,从ajax接收
- 创建P5.js二维数组
- 如何在Javascript中从select标记的一系列选项中构建二维数组
- inArray,indexOf在二维数组中
- 比较二维数组js
- 从二维数组中获取img src和img维度,并在body中显示
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- 如何将以下字符串拆分为二维数组:
- Javascript中的非数字索引多维数组
- 更新Aurelia中二维数组的视图
- 如何在JavaScript中拆分二维数组
- 在二维数组中搜索比嵌套循环更有效的方法
- 无法访问javascript中二维数组中的第二个字段
- 如何汇总二维数组,例如索引 0+index0
- 检查二维数组索引是否存在
- 为什么二维数组的索引返回-1
- 我如何从PHP返回索引二维数组到JavaScript
- 在二维数组中查找索引
- 在二维数组中动态创建索引
- 在迭代二维数组时获取外部 for 循环的索引