我如何获得“LSZ09”。
var el1=data[0];
alert(el1);
这给了我数组中的“a”,因为位置 1 给了我 r, 2 r, 3 a, 4y ,..
该数组是通过“echo json_encode($punten); ”接收的
当我尝试时
var jsonDataArray = JSON.parse(data);
我收到语法错误:
SyntaxError: JSON.parse: unexpected character
代码:
$.ajax({ url: 'getPunten.php',
data: {statnam: jSelectedStation[0]},
type: 'get',
success: function(data) {
从 php 脚本接收,最后一行是:echo json_encode($punten);
[{"STATDEV":"LSZ09 ","0":"LSZ09 ","DEVPKT":"1","1":"1","PKTTYP":"S","2":"S","KARTNR":"0","3":"0","BITNRK":"1","4":"1","BITSTATUS":"0","5":"0","TYPE":"I ","6":"I "},{"STATDEV":"LSZ10 ","0":"LSZ10 ","DEVPKT":"1","1":"1","PKTTYP":"S","2":"S","KARTNR":"0","3":"0","BITNRK":"2","4":"2","BITSTATUS":"0","5":"0","TYPE":"I ","6":"I "}
php:
$db = new PDO ("xxxx");
$qry="SELECT r.refnam, r.zustnr FROM refdev r INNER JOIN (SELECT refnam, COUNT(*) cnt FROM refdev rc GROUP BY refnam) rc ON rc.refnam = r.refnam LEFT OUTER JOIN texte t ON r.sigtnr = t.textnr WHERE rc.cnt = $aantal AND t.tstring LIKE '%$tekst%' ORDER BY r.refnam, r.zustnr";
$filterQry = $db->query($qry);
$filtered = $filterQry->fetchAll();
echo json_encode($filtered);
最佳答案
如果您显示的 php 就是您正在使用的 php,不,它不会工作。
您会看到,传递给 JavaScript 的文本包括两者 var_dump
和 echo
的结果。
考虑以下 PHP 代码:
<?php
$filtered = array(1,2,3);
var_dump($filtered);
echo json_encode($filtered);
?>
你认为这样做的结果是什么?提示:这不是您所期待的。 你似乎很期待它
[1,2,3]
嗯,是的——至少部分是这样。这只是最后一行的输出。但我们没有考虑中间行 var_dump($filtered);
- 该代码将输出类似于您用 Received from php script, with 标记的代码最后一行是: echo json_encode($punten);
我的代码片段的输出实际上是:
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
[1,2,3]
这就是为什么你会得到包含 'a' 'r' 'r' 'a' 'y' 的前 5 个元素!
这也是为什么调用 JSON.parse(data);
失败 - "array(3)"
不是有效的 json。
提示:当您使用浏览器导航到 php 脚本时,您看到的内容就是通过 ajax 调用检索的内容。
关于javascript - 如何在 Javascript 中访问 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19657664/