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?
Related videos on Youtube
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, 2022Comments
-
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 about 12 yearsTo 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. -
SLaksYou have a SQL injection vulnerability.
-
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 BDump 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@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.
-