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.
  10 3618
Hei folkens.

Jeg har et veldig enkelt skjema.
1 dropdown og 1 submit knapp.

Akkurat nå henter jeg ut "Value" og "dataset" på option som er valgt i dropdown.
Denne dataen vil jeg sende i AJAX som "navn" og "guid".

Akkurat nå har jeg dette:

Kode

$.ajax({
	url: "submit_change.php",
	type: "POST",
	contentType: "application/json; charset=utf-8",
	dataType: "json",
	data: {name: datagid},
	success: function(data) {
		alert("Successfully");
	}
})
Dette fungerer ikke. Jeg ser bare siden loader i 0.5 sec og ingenting skjer.

Legger jeg på dette:

Kode

$.ajax({
	url: "submit_change.php",
	type: "POST",
	contentType: "application/json; charset=utf-8",
	dataType: "json",
	data: {name: datagid},
	success: function(data) {
		alert("success");
		console.log(data);
	},
        error: function (xhr, ajaxOptions, thrownError){alert("ERROR:" + xhr.responseText+" - "+thrownError);}
	});
Her får jeg alert med "Error: -"
Ingenting mer.

I php filen ligger dette:

Kode

<?php 
    header("Content-Type: application/json", true);
    $name = $_POST['name'];

    echo $name;

?>

Ikke akkurat avansert kode, jeg vil bare at AJAX og PHP skal fungere her sånn at jeg bare får sendt den dataen jeg trenger for å laste opp igjennom API'et jeg trenger.

Noen som har tips?
Umiddelbart tipper jeg det krasjer fordi du ikke returnerer JSON fra PHP.

Prøv å endre til

Kode

    <?php 
        header("Content-Type: application/json", true);
        $name = $_POST['name'];
     
        echo json_encode(['name' => $name];
     
    ?>
Ut i fra dokumentasjonen https://api.jquery.com/jquery.ajax/ så skal andre argument til error-funksjonen være "textStatus" som inneholder en beskrivelse av feilen.
Sist endret av Yochi; 7. desember 2021 kl. 14:24. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Takk for svar Yochi.
Endret til det du sa, men fortsatt ingenting.

Eneste jeg får hvis jeg kjører error: i Ajax er dette:

https://ibb.co/7bFp8LK

Det sier liksom ingenting om hva som går galt her.
Jeg trenger kun å vite at det sendes korrekt til PHP da jeg skal bruke cURL her til å poste noe info inn med API.
Sitat av Gameomanic Vis innlegg
Takk for svar Yochi.
Endret til det du sa, men fortsatt ingenting.

Eneste jeg får hvis jeg kjører error: i Ajax er dette:

https://ibb.co/7bFp8LK

Det sier liksom ingenting om hva som går galt her.
Jeg trenger kun å vite at det sendes korrekt til PHP da jeg skal bruke cURL her til å poste noe info inn med API.
Vis hele sitatet...
Du kan inspisere forespørselen i nettverksfanen til Chrome Devtools. Da får du nok litt mer informasjon om hva som faktisk gikk galt. Du kan også se alt av request headers/body, og f.eks kopiere requesten som en curl kommando om du ønsker det.
Sist endret av sondriz; 7. desember 2021 kl. 17:30.
Sitat av sondriz Vis innlegg
Du kan inspisere forespørselen i nettverksfanen til Chrome Devtools. Da får du nok litt mer informasjon om hva som faktisk gikk galt. Du kan også se alt av request headers/body, og f.eks kopiere requesten som en curl kommando om du ønsker det.
Vis hele sitatet...
Når jeg sjekker aktiviteted nå så ser jeg at status på denne forespørselen står som "Blocked".
Tok bort at den ikke skulle blokkere så timet den ut på 825ms.

Har også satt dette som en type: "POST", men i Network står denne som en GET.
Sist endret av Gameomanic; 7. desember 2021 kl. 17:39.
Er det noe info i error logen til webserveren?

Lenge siden jeg har brukt php, men scripte ditt ser ikke riktig ut for meg. Hvis det er slik at du skal mota json med php scriptet må dette dekodes. Noe alle dette:

Kode

<?php

    // Takes raw data from the request 
    $json = file_get_contents('php://input');
    // Converts it into a PHP object 
    $data = json_decode($json, true);

    echo $data['name'];

?>
Se også https://www.geeksforgeeks.org/how-to...post-with-php/
Får absolutt ingen feilmeldinger. Eneste jeg kan se er at php fila får status 200, GET Method, kjører fra Localhost og får "Slow server response"
Om du trykker på forespørselen til PHP-fila i nettverksfanen skal du kunne se responsen fra server. Hva ser du der?
Responsen var 200.

Men jeg orket ikke bry meg med dette mer ^^
Jeg tok en kjapp "fix" istedenfor. Opprettet 2 input felt. Brukte javascript til å gi de value som de skal ha, skjulte feltene med CSS og henter med PHP. Ikke pent, men en kjapp fix for å kunne fortsette
Her er et eksempel som fungerer:

Index.html

Kode

<script>
          $.ajax({
    	url: "backend.php",
    	type: "POST",
    	contentType: "application/json; charset=utf-8",
    	dataType: "json",
    	data: JSON.stringify({name: 'Hello world'}),
    	success: function(data) {
    		alert("Successfully");
    	},
      error: function(jqXHR, textStatus, errorThrown) {
        alert('Something went wrong:', textStatus);
        console.error(errorThrown);
      }
    })
    </script>
backend.php

Kode

<?php
  header("Content-Type: application/json", true);
  
  $json = file_get_contents('php://input');
  
  $data = json_decode($json, true);

  echo json_encode([
    'message' => 'Incoming username is: ' . $data['name'],
  ]);
  
  // Ta vekk kommentaren for å enkelt teste error-funksjonen.
  // echo 'triggers error';
Problemet ditt var at du må stringify objektet før det sendes til serveren, også dekodes på server før du kan sende noe tilbake.
Sitat av Yochi Vis innlegg
Her er et eksempel som fungerer:

Index.html

Kode

<script>
          $.ajax({
    	url: "backend.php",
    	type: "POST",
    	contentType: "application/json; charset=utf-8",
    	dataType: "json",
    	data: JSON.stringify({name: 'Hello world'}),
    	success: function(data) {
    		alert("Successfully");
    	},
      error: function(jqXHR, textStatus, errorThrown) {
        alert('Something went wrong:', textStatus);
        console.error(errorThrown);
      }
    })
    </script>
backend.php

Kode

<?php
  header("Content-Type: application/json", true);
  
  $json = file_get_contents('php://input');
  
  $data = json_decode($json, true);

  echo json_encode([
    'message' => 'Incoming username is: ' . $data['name'],
  ]);
  
  // Ta vekk kommentaren for å enkelt teste error-funksjonen.
  // echo 'triggers error';
Problemet ditt var at du må stringify objektet før det sendes til serveren, også dekodes på server før du kan sende noe tilbake.
Vis hele sitatet...
Aha.
Jeg skal teste dette etterpå når jeg har fått ferdig oppdateringen mot API'et her.