简体   繁体   中英

ANDROID&PHP - Why am I getting this JSONArray parsing error

I've tried various methods to display data from MySQL into android with PHP and JSON from my hosting here , but always getting error like thisScreenshot_2016-10-22-15-52-56-359_flix.yudi.okh.png

but when i request another link with the same JSON result, its work fine

i've tried to find out, and i suggested to enable JavaScript in my hosting, but i didn't find out the reference how to enable JavaScript in my hosting,

here is the PHP code to encode_JSON

<?php
    include 'dbconfig.php';
    $con = new mysqli($servername, $username, $password, $dbname);
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $query = "select id,ask from pertanyaan";

    $result = mysqli_query($con, $query);

    $rows = array();
    while ($r = mysqli_fetch_array($result)) {
        $rows[] = $r;
    }
    echo json_encode(array_values($rows));

    mysqli_close($con);
?>

did i using wrong code to encode_json from PHP?

EDITED AFTER ADD header('Content-Type: application/json');

LogCat notif

10-24 14:16:09.010 17727-17749/flix.yudi.okhttp1 E/MainActivity: Response from url: <html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("455e95bd78dbe99a933749187199f824");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://www.zxccvvv.cuccfree.com/send_data.php?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>
10-24 14:16:09.010 17727-17749/flix.yudi.okhttp1 E/MainActivity: Json parsing error: Value <html><body><script of type java.lang.String cannot be converted to JSONArray
10-24 14:16:09.161 17727-17746/flix.yudi.okhttp1 V/RenderScript: 0x55abdd14e0 Launching thread(s), CPUs 8

Compared given two request. You haven't set the header in PHP script as JSON. For setting Content-type header as JSON, put following code in PHP script

header('Content-Type: application/json');

It will work. There is not error in your android code, as the 2nd url gives the desired result. Also I don't think there is any problem while encoding JSON.

While comparing two links check the Content-type header in request, both are different. 在此处输入图片说明

在此处输入图片说明

You can try this.

<?php
    include 'dbconfig.php';
    $con = new mysqli($servername, $username, $password, $dbname);
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $query = "select id,ask from pertanyaan";

    $result = mysqli_query($con, $query);


    while ($r = mysqli_fetch_array($result)) {
        extract($r);
   $rows[] = array(
    "id"=>$id,
   "ask"=>$ask
      );
    }
   header('Content-Type: application/json');
     echo json_encode($rows);

    mysqli_close($con);
?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM