JavaScript fetch JSON kimenetében speciális karakter
2022-02-02T00:43:47+01:00
2022-02-02T16:19:02+01:00
2022-08-12T07:05:31+02:00
*deleted_23419333
Sziasztok!

Ezt a PHP kódot használom:

print json_encode( array( 'out_rows_all'=> $rowcount, 'tbody'=> $tbody ) ); // próbáltam ezt is, de hiába: json_encode( array(), JSON_UNESCAPED_UNICODE );

A $tbody az egy MySQLi lekérdezés eredménye. Connect után használom:

mysqli_set_charset( $mysqli, 'utf8mb4' );

Minden tökéletes lenne, de ha a MySQL adatbázis lekérdezésben van egy speciális karakter (❤), akkor nem töltődnek be az adatok és a console log-ban azt látom, hogy:

Uncaught (in promise) SyntaxError: Unexpected end of JSON input

Megoldás erre a problémára:

utf8_encode( $tbody );

... viszont ezzel sajnos a szívből egy ilyen lesz:

❤

Tehát még se jó így.

Fetch:

fetch( 'https://*/api/fetch.php', { method: 'POST', body: JSON . stringify( { type_id: type_id, order_by: in_order_by, order: in_order } ) } ) . then( response=> response . json() ) . then( response=> { document . getElementById( "data" ) . innerHTML = response.tbody, document . getElementById( "out_rows_all" ) . innerHTML = response.out_rows_all } );

Előre is köszönöm a segítséget.
Mutasd a teljes hozzászólást!
Milyen megfontolásból van ott az `JSON_UNESCAPED_UNICODE`?
Próbálj kicsit debuggolni, ilyesmi programokkal (tehát JavaScript, böngésző stb nélkül):

<?php $heart="\xe2\x9d\xa4"; printf("heart=%s (%s)\n", $heart, bin2hex($heart)); $js1= json_encode(array('heart'=>$heart)); printf("json(default)=%s\n", $js1); $js1= json_encode(array('heart'=>$heart),JSON_UNESCAPED_UNICODE); printf("json(unescaped)=%s\n", $js1); ?>
Egyébként van egy olyan halvány érzésem, hogy egyszer már kérdezted ugyanezt, és akkor is ugyanezt válaszoltam.
Mutasd a teljes hozzászólást!

abcd