1

我如何获得“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);
4

1 回答 1

0

如果您显示的那个 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 last line being: echo json_encode($punten);

我的片段的输出实际上是:

array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } [1,2,3]

这就是为什么你会得到前 5 个包含 'a' 'r' 'r' 'a' 'y' 的元素!这也是调用JSON.parse(data);失败的原因 -"arrray(3)"不是有效的 json。

提示:当您使用浏览器导航到 php 脚本时,您所看到的就是将通过 ajax 调用检索到的内容。

于 2013-10-29T12:30:11.340 回答