JSON.parse: unexpected character

13,693

You don't need the $.parseJSON call as jQuery automatically does it because if you don't specify a dataType property jQuery tries to guess it and calls the correct function to parse the response before the data is handled to the success function

   $.ajax({
        type: 'POST',
        url:$(this).attr('action'),
        data:$(this).serialize(),
        success:function(data)
        {
          //console.log("SUCCESS " + data);
          var json_cli = data;
        }
    })

check out also this question Why is 'jQuery.parseJSON' not necessary?

Share:
13,693

Related videos on Youtube

Vicent
Author by

Vicent

Programador en la industria cerámica. #Python, #MySQL, #SQL, #Php, #Javascript, #C#, #C, #Vue, #Jquery, #Linux, #Css, #Bootstrap,....

Updated on June 27, 2022

Comments

  • Vicent
    Vicent almost 2 years

    I'm trying to pass a json from php jquery, after getting into an array of sql query and get the following javascript error.

    JSON.parse: unexpected character
    

    The function to return result of sql:

    public function selectassocSql($sql){
    $i = 0;
            $resSelect = array();
            mysql_query("SET NAMES 'utf8'");
            $result = mysql_query($sql);
            while ( $row = mysql_fetch_assoc($result) )
            {
                $resSelect[$i] = $row;
                $i++;
            }
            mysql_free_result($result);
            return $resSelect;
    }
    

    After use this function in this way,

    $sql = "SELECT id, code, name FROM table WHERE code LIKE '%$codcli%' ";
    $v = $data->selectassocSql($sql);
    echo json_encode($v, JSON_FORCE_OBJECT); 
    

    And the javascript code is this:

    $('#formclientes').submit(function(e){
    
            e.preventDefault();
            $.ajax({
                type: 'POST',
                url:$(this).attr('action'),
                data:$(this).serialize(),
                success:function(data)
                {
                  //console.log("SUCCESS " + data);
                  var json_cli = $.parseJSON(data);
                }
            })
        })   
    

    How I can correct this error and how I can read a json from jquery?

    • Felix Kling
      Felix Kling about 12 years
      To correct the error, you have to have valid JSON. Apparently your PHP script is not creating valid JSON. An example of the output of json_encode($v, JSON_FORCE_OBJECT) would be helpful.
    • SLaks
      SLaks
      You have a SQL injection vulnerability.
    • Nicola Peluchetti
      Nicola Peluchetti
      @FelixKling he doesn't need the $.parseJSON call, jQuery guesses the dataType and parse the response for you: data is already a json
    • Marc B
      Marc B
      Dump out data in your JS first before trying to parse it, make sure that there's nothing else in there except json (e.g. no php warning/error messages).
    • hakre
      hakre
      @FelixKling: json_encode does always return valid json (e.g. string(4) "null"), however, error reporting and display errors might be set in a way that more is output than just the json string.