【问题标题】:SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 759 of the JSON dataSyntaxError: JSON.parse: JSON 数据的第 1 行第 759 列的 JSON 数据后出现意外的非空白字符
【发布时间】:2015-09-10 07:27:03
【问题描述】:

以下是我的 php 文件。

<?php
    header('Access-Control-Allow-Origin: *');
    include 'dbconnection.php';

    //$serviceType = (isset($_POST["type"])?Trim($_POST["type"]):"");
    $JOBNO = (isset($_POST["JOBNO"])?Trim($_POST["JOBNO"]):"");
    $JOBSEQ = (isset($_POST["JOBSEQ"])?Trim($_POST["JOBSEQ"]):"");
    $HBLNO = (isset($_POST["HBLNO"])?Trim($_POST["HBLNO"]):"");
    $MBLNO = (isset($_POST["MBLNO"])?Trim($_POST["MBLNO"]):"");
    $CREF = (isset($_POST["CREF"])?Trim($_POST["CREF"]):"");

    $sql = "select * from VWJOBDET WHERE (JOBNO = :jobno or :jobno is null) and (JOBSEQNO = :jobseq or  :jobseq is null)
            and (MBL = :mblno or :mblno is null) and (HAWBHBL = :hblno or :hblno is null) and (CUSTREF = :cref or :cref is null)";
    $query = $dbh->prepare($sql);
    $query->bindParam(':jobno',$JOBNO,PDO::PARAM_STR);
    $query->bindParam(':jobseq',$JOBSEQ,PDO::PARAM_STR);
    $query->bindParam(':mblno',$MBLNO,PDO::PARAM_STR);
    $query->bindParam(':hblno',$HBLNO,PDO::PARAM_STR);
    $query->bindParam(':cref',$CREF,PDO::PARAM_STR);
    $query->execute();
    //$data = array();
    foreach($query as $row) {
         echo json_encode($row); 
    }

    exit;   
?>

JS 文件 tracking.js

function  searchEngine() {
    //alert("enters");  
    localStorage.lpage="Shipment Tracking";
    var jno = document.getElementById('jobno').value;
    var jseq = document.getElementById('jobseq').value;
    var mbl = document.getElementById('mblno').value;
    var hbl = document.getElementById('hblno').value;
    var cf = document.getElementById('cref').value;
    var Var_jno=jno.toUpperCase();
    var Var_jseq=jseq.toUpperCase();
    var Var_mbl=mbl.toUpperCase();
    var Var_hbl=hbl.toUpperCase();
    var Var_cf=cf.toUpperCase();

    var postStat=$.post('http://localhost/ipack/tracking.php',{'JOBNO':Var_jno,'JOBSEQ':Var_jseq,'MBLNO':Var_mbl,'HBLNO':Var_hbl,'CREF':Var_cf,},
    function (jsonVal)
    {

         obj = JSON.parse(jsonVal);
        console.log(obj.ORIGIN);
    })  
    window.location.href = '#Viewbl';   

}

index.html

<div data-role="content"  style=" margin-top:1%; margin-bottom:10%;" align="center"> <!--Content-->
                <div style="width:50%" align="right">
                    <input type="text" name="jobno" id="jobno" value="" placeholder="Enter Job No: "  data-theme="a"/>
                    <input type="text" name="jobseq" id="jobseq" value="" placeholder="Enter Job Sequence No: "  data-theme="a"/>
                    <input type="text" name="mblno" id="mblno" value="" placeholder="Enter Master AWB/BL No: "  data-theme="a"/>
                    <input type="text" name="hblno" id="hblno" value="" placeholder="Enter House AWB/BL No: "  data-theme="a"/>
                    <input type="text" name="cref" id="cref" value="" placeholder="Enter Client Reference No: "  data-theme="a"/>
                    <button onClick="javascript: searchEngine()" >Search</button>
                    <button type="reset" onClick="javascript: refreshEngine()" >Reset</button>
                </div>

            </div>

当我按下搜索按钮时,在 mozilla 控制台中显示如下错误:

SyntaxError: JSON.parse: JSON 数据的第 1 行第 759 列的 JSON 数据后出现意外的非空白字符。

在我的 json 输出中也获得了多重价值。 这是我的 json 输出:

{"INTJOBNO":"351","0":"351","JOBNO":"HGB/0003/2015","1":"HGB/0003/2015","JOBSEQNO":"0 ","2":"0","JOBTYPE":"OFI","3":"OFI","CUSTREF":null,"4":null,"HAWBHBL":"352-15-02345-352628 ","5":"456-15-02345-6768","MBL":"ME-GH67676767","6":"ME-EFGH0001","JOBTYPEDESC":"海运进口","7": "海运进口","PKGS":"5","8":"5","VOLUME":"7.333","9":"7.333","WEIGHT":"1148","10": "1148","ORIGIN":"SOUTHAMPTON","11":"SOUTHAMPTON","DESTINATION":"JEBEL ALI","12":"JEBEL ALI","ETD":"09-JUN-15", "13":"09-JUN-15","ETA":"26-JUN-15","14":"26-JUN-15","SHIPMENTSTATUS":null,"15":null,"STATDATE ":null,"16":null,"CUSTOMER":"CU0010","17":"CU0010","CUSTOMERNAME":"asdasdas AB","18":"FAGERHULTS BELYSNING AB","SHIPPER":null ,"19":null,"SHIPPERNAME":null,"20":null}

{"INTJOBNO":"361","0":"361","JOBNO":"OFC/0005/2015","1":"OFC/0005/2015","JOBSEQNO":"0 ","2":"0","JOBTYPE":"OFC","3":"OFC","CUSTREF":null,"4":null,"HAWBHBL":"352-15-02345-345456 ","5":"352-15-02345-352628","MBL":"ME-EJ011008","6":"ME-EJ011008","JOBTYPEDESC":"海运清关","7": "海运清关","PKGS":"5","8":"5","VOLUME":"7.333","9":"7.333","WEIGHT":"1148","10": "1148","ORIGIN":"LONDON","11":"LONDON","DESTINATION":"JEBEL ALI","12":"JEBEL ALI","ETD":"09-JUN-15", "13":"09-JUN-15","ETA":null,"14":null,"SHIPMENTSTATUS":null,"15":null,"STATDATE":null,"16":null,"CUSTOMER ":"CU0010","17":"CU1110","CUSTOMERNAME":"adsasff AB","18":"hjkhjkhjk AB","SHIPPER":null,"19":null,"SHIPPERNAME":null, "20":null}

任何帮助将不胜感激。

【问题讨论】:

  • 欢迎来到 Stack Overflow!我编辑了您的问题以格式化块引用中的错误消息 - 请参阅编辑帮助以获取有关格式化的更多信息。另外,请不要添加诸如“请帮助”和“谢谢”之类的非建设性文字,尽管您的善意总是值得赞赏的,但它们并不是吸引答案所必需的。祝你好运!

标签: php oracle pdo


【解决方案1】:

查询执行函数后需要使用fetch语句获取数据

$query->execute();
$data = $query->fetchAll();
echo json_encode($data);

注意:-

$query-&gt;fetchAll(); 将返回数字和关联数组,如果您只想关联数组使用$query-&gt;fetchAll(PDO::FETCH_ASSOC);,或者如果您只想数字数组数据使用@987654325 @

更多参考pdo-fetchAll

来自您的代码

foreach($query as $row) {
         echo json_encode($row); 
    }

多次打印json结果是错误的,将所有数据收集为数组,然后最后回显json数据,即

$result = []
foreach($query->fetch() as $row) {
    $result[] = $row;
}
echo json_encode($result);

【讨论】:

  • @VipinKA 很高兴,你能让它接受答案吗
【解决方案2】:
$query->execute();
echo json_encode($query->fetchAll()); 

【讨论】:

  • 它在 json 上获取 mutipple 值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
  • 2019-12-27
  • 1970-01-01
  • 2017-04-28
  • 2018-02-16
  • 1970-01-01
相关资源
最近更新 更多