Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  11 1378
Hei folkens.


Første gangen jeg skal prøve å lage et skjema som sendes inn uten å få en "page load", så jeg bruker Ajax til å poste data inn i PHP som igjen kjører et API som skal returnere data.

Skjema er standard. 3 input felt og 1 knapp.

Ajax:

Kode

$(document).ready(function() {
    $('#form-1').submit(function(e) {
        e.preventDefault();


        $.ajax({
            url: 'URL vises ikke pga taushetsplikt',
            type: "POST",
            data: $(this).serialize(),
            success: function(data) {
                $("#form-errors").html(data);
            },
            error: function() {
                alert("Form submission failed!");
            }
        });
    });
});
I PHP kjører da et API.
Men jeg trenger her å hente ut data separat.

Når jeg nå kjører

Kode

echo json_encode($_POST);
Så kommer data ut som dette:

Kode

{"postalnumber":"6564","postalplace":"whatever","wanted":"5000000","type":"visesikkepgataushetsplikt"}0

Hvis jeg kjører f.eks:

Kode

echo $_POST['postalnumber];
Så får jeg ingenting.

Hvordan kan jeg her hente ut data fra hvert felt sånn at jeg kan bruke denne dataen i API'et mitt?

Beklager at det er et teit spørsmål, men jeg har søkt og søkt på google, men jeg finner rett og slett ikke noe som hjelper meg her.


Ha en fin kveld.
Hei! Skriver på mobil. Du mangler en apostrof når du printer.

Har du mer utklipp fra resten av koden din? Forsøk å les om foreach på w3schools.
Sist endret av Kierkegaard; 28. august 2022 kl. 21:34. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av Kall varld Vis innlegg
Hei! Skriver på mobil. Du mangler en apostrof når du printer.

Har du mer utklipp fra resten av koden din? Forsøk å les om foreach på w3schools.
Vis hele sitatet...
Ja, så det der. Glemte bare å skrive apostrofen ser jeg

Er ikke så mye mer av koden, da ikke noe mer av koden er relevant egentlig
Skal jeg loope igjennom $_POST for så å hente ut det jeg trenger?
Det ser ut som at teksten du får er i JSON-format.

Du trenger å lese dette:
https://www.freecodecamp.org/news/js...th-javascript/
Jeg har prøvd å kjøre:

Kode

$test = json_decode($_POST, true);
echo $test['postalnumber'];
Dette gir bare error fra Ajax via:

Kode

error: function() {
    alert("Form submission failed!");
}

Det som kommer fra Ajax / Skjema skal kunne leses fra PHP og jeg trenger å ha disse dataene inn i 4 variabler som jeg har i PHP.
Sitat av Gameomanic Vis innlegg

Er ikke så mye mer av koden, da ikke noe mer av koden er relevant egentlig ?
Vis hele sitatet...
Det kan være greit å se helheten i koden hvor du behandler dataen for å vurdere fremgang eller feil.
Hva sier nettverks fanen i nettleseren din når du sender inn skjemaet?

Det hadde vært fint å se mer av koden.
Sist endret av random105675; 29. august 2022 kl. 07:07.
Hei igjen
Uten å ha sett resten av koden (jeg forstår godt at du ikke kan dele), så må jeg tippe litt og rote litt i hukommelsen. Det jeg la merke til var dette:

Kode

$.ajax({
            url: 'URL vises ikke pga taushetsplikt',
            type: "POST",
            data: $(this).serialize(),
            success: function(data) {
                $("#form-errors").html(data);
            },
            error: function() {
                alert("Form submission failed!");
Jeg gjetter på at akkurat denne linja er problemet:

Kode

data: $(this).serialize(),
Prøv å gjøre noe annet her, finn ut om det å kjøre $(this).serialize() fungerer eller ikke. Jeg tenker at hvis funksjonen i «data:» feiler, så går den til error.

PS: Bruk console.log!
console.log(melding)

Trykk så F12 i Chrome. Du får opp en konsoll for javascript der interne feilmeldinger og slikt vises.
Sist endret av Tysteren; 29. august 2022 kl. 08:28.
Sitat av Gameomanic Vis innlegg
Jeg har prøvd å kjøre:

Kode

$test = json_decode($_POST, true);
echo $test['postalnumber'];
Dette gir bare error fra Ajax via:

Kode

error: function() {
    alert("Form submission failed!");
}

Det som kommer fra Ajax / Skjema skal kunne leses fra PHP og jeg trenger å ha disse dataene inn i 4 variabler som jeg har i PHP.
Vis hele sitatet...
Du må prøve å lese feilmeldingene fra PHP. Ajax-feilen sier bare at serveren ikke returnerte som den skulle.

Error-funksjonen til $.ajax sender og "textStatus" og "errorThrown" som argument 2 og 3. Det kan du også logge for å få bedre indikasjon på hva feilen er.
Sitat av Yochi Vis innlegg
Du må prøve å lese feilmeldingene fra PHP. Ajax-feilen sier bare at serveren ikke returnerte som den skulle.

Error-funksjonen til $.ajax sender og "textStatus" og "errorThrown" som argument 2 og 3. Det kan du også logge for å få bedre indikasjon på hva feilen er.
Vis hele sitatet...
Yochi sitt innlegg er det samme som jeg hadde i tankene da jeg skrev mitt forrige innlegg. Prøv dette:

Kode

$(document).ready(function() {
    $('#form-1').submit(function(e) {
        e.preventDefault();
 
 
        $.ajax({
            url: 'URL vises ikke pga taushetsplikt',
            type: "POST",
            data: $(this).serialize(),
            success: function(data) {
                $("#form-errors").html(data);
            },
            error: function(textStatus, errorThrown) {
                console.log(errorThrown);
                console.log(textStatus);
                alert("Form submission failed!");
            }
        });
    });
});
Sitat av Tysteren Vis innlegg
Yochi sitt innlegg er det samme som jeg hadde i tankene da jeg skrev mitt forrige innlegg. Prøv dette:

Kode

$(document).ready(function() {
    $('#form-1').submit(function(e) {
        e.preventDefault();
 
 
        $.ajax({
            url: 'URL vises ikke pga taushetsplikt',
            type: "POST",
            data: $(this).serialize(),
            success: function(data) {
                $("#form-errors").html(data);
            },
            error: function(textStatus, errorThrown) {
                console.log(errorThrown);
                console.log(textStatus);
                alert("Form submission failed!");
            }
        });
    });
});
Vis hele sitatet...
Du må slenge inn noe som argument 1 på error-funksjonen, det er vel selve request-objektet mener jeg å huske 👍
Sitat av Yochi Vis innlegg
Du må slenge inn noe som argument 1 på error-funksjonen, det er vel selve request-objektet mener jeg å huske 👍
Vis hele sitatet...
Ops, du har rett

Kode

$(document).ready(function() {
    $('#form-1').submit(function(e) {
        e.preventDefault();
 
 
        $.ajax({
            url: 'URL vises ikke pga taushetsplikt',
            type: "POST",
            data: $(this).serialize(),
            success: function(data) {
                $("#form-errors").html(data);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log(errorThrown);
                console.log(textStatus);
                alert("Form submission failed!");
            }
        });
    });
});
Blir da korrekt.