13. februar 2022 - 10:46Der er
13 kommentarer og 2 løsninger
$.get(url, (data){}
Jeg bruger $.get(url, (data){} til at hente dat afra min mysql via en php side. Men jeg kan ikke få oprettet et array i javascript udfra de hentede data. echo fra min php fil: [{"kunde_id":"1","navn":"Test 1","adresse":"Testvej 1","postnr":"1000","city":"Testby 1"},{"kunde_id":"2","navn":"Test 2","adresse":"Testvej 2","postnr":"1717","2000":"Testby2"}] java script: GetId = 1 $.get("url/partner_id=" + GetId, function(data, stat) { document.getElementById("test").value = stat; var partner; var js1; var js2; //dette er input fra url filen's echo: [{"kunde_id":"1","navn":"Test 1","adresse":"Testvej 1","postnr":"1000","city":"Testby 1"},{"kunde_id":"2","navn":"Test 2","adresse":"Testvej 2","postnr":"1717","2000":"Testby2"}]
js2 = [{"kunde_id":"1","navn":"Test 1","adresse":"Testvej 1","postnr":"1000","city":"Testby 1"},{"kunde_id":"2","navn":"Test 2","adresse":"Testvej 2","postnr":"1717","city":"Testby2"}]; var nydata; //nydata = JSON.stringify(data); // partner = JSON.parse(nydata); partner = JSON.parse(data); // partner = js2; virker som det skal der er 2 muligheder i option console.log(data); : console.log(nydata); console.log(partner); var x = document.getElementById("kunde"); const entries = Object.entries(partner); var text =""; var value=""; for (var i = 0; i < partner.length; i++) { var option = document.createElement("option"); option.text = partner[i].navn + " - " + partner[i].adresse + " - " + partner[i].postnr + " - " + partner[i].city; option.value = partner[i].id; x.add(option); } }); Hvis jeg bruger partner = data; er alle data undefined, jeg jeg bruger : //nydata = JSON.stringify(data); // partner = JSON.parse(nydata); Så er data undefines hvis jeg bruger partner = JSON.parse(data); så får jeg denne fejl i console: VM6309:1
Uncaught SyntaxError: Unexpected token in JSON at position 1 at JSON.parse (<anonymous>) at Object.success (<anonymous>:19:19) at j (jquery.js:3148:30) at Object.fireWith [as resolveWith] (jquery.js:3260:7) at x (jquery.js:9314:14) at XMLHttpRequest.b (jquery.js:9718:8) hvordan får jeg oprettet mit array fra php filen ?
Vi har nok at gøre med et "usynligt" tegn før dit "["-tegn.
Fejlbeskeden for dette:
var a = ' x[{"kunde_id":"1","navn":"Test 1","adresse":"Testvej 1","postnr":"1000","city":"Testby 1"},{"kunde_id":"2","navn":"Test 2","adresse":"Testvej 2","postnr":"1717","2000":"Testby2"}]';
var b = JSON.parse(a);
er:
SyntaxError: Unexpected token x in JSON at position 1
Din fejlbesked er: Unexpected token in JSON at position 1 hvor der ikke står noget efter "token" - dvs. usynligt tegn.
hvordan får jeg udskrevet den importerede string som den importeres. I php har jeg fjernet første og sidste tegn i den string der bliver skrevet. Men så fjerner jer [ og ] hvilket jo ikke er meningen...
Det er svært at se på afstand. Du skal selvfølgelig beholde "[" og "]".
Men prøv at sætte 7 mellemrum ind i din udskrift i PHP lige før "[". Hvis fejlbeskeden siger noget andet end "position 1", så har vi en spor at gå efter.
Hvis den fortsat siger "position 1", så er det noget der sker i dit PHP før du skriver "[" - måske mange linjer før.
Og så kommer jeg jo lige i tanke om noget. Hvis dit PHP-script er gemt som UTF8 med BOM ("beginning of message", sådan cirka), så leveres der 3 "usynlige" tegn inden dit PHP går i gang med at udføres.
php fil er gemt som utf-8 uden bom der er nu 7 mellemrum før [ Uncaught SyntaxError: Unexpected token in JSON at position 1 at JSON.parse (<anonymous>) at Object.success (<anonymous>:19:19) at j (jquery.js:3148:30) at Object.fireWith [as resolveWith] (jquery.js:3260:7) at x (jquery.js:9314:14) at XMLHttpRequest.b (jquery.js:9718:8)
Ok - nu har jeg prøvet noget andet: simpelthen copy-pasted din fejlbesked her fra eksperten, og decodet den tegn for tegn:
0000000 U n e x p e c t e d t o k e n 6e55 7865 6570 7463 6465 7420 6b6f 6e65 0000020 357 273 277 i n J S O N a t ef20 bfbb 6920 206e 534a 4e4f 6120 2074
Der står faktisk en BOM: 357 273 277 lige der efter token.
Det er en tastefejl, jeg har ikke kopieret den egentlige data fra min DB, men selv udfyldt values med testby osv. fik skrevet forkert med 2000 og city :-/
Hvad betyder den bom du har fundet, og hvordan pokker får jeg dette rettet. Og mange mange tak for din her på en søndag :-)
fejlen lå i den php fil som henter data fra MYSQL. Det er en fil oprettet som en class med funktioner som bliver kaldt via min url i JQuery funktionen. Når jeg kalder databasen fra den fil som skriver resultatet virker det hele. Hvad problemet så end er med min class fil, ja det er så et mysterium. 1. $.get("url.php?partner_id=" + GetId, function(data, stat) 2 url.php?partner_id= kalder en php fil med en class som henter data fra mysql/ det er denne fil der lavaer balladen
Så i toppen af den class-fil står den en BOM. Tag den en tur igennem en fornuftig editor.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.