Witam.
Mam problem i już mnie nerwy biorą, więc chciał bym tu spytać o rozwiązanie. Mam w Javascipcie tablicę tekstów, chciał bym ją wysłać do PHP. I NIBY Javascript wysyła prawidłowo, ale PHP tego nie odczytuje. Próbuję dwóch sposobów i żaden nie działa. Jeden z użyciem XHR (tablica nazywa się "array" a plik do którego chcę wysłać nazywa się saveResult.php):
JSONArray = JSON.stringify(array);
var xhr = new XMLHttpRequest();
xhr.open("POST", "saveResult.php", false);
xhr.onload = function(){
if (xhr.readyState == 4 && xhr.status == 200){
console.log("Poszło OK");
}
}
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("myArray = " + JSONArray);
Niestety nie mam pojęcia, co tu wpisać jako setRequestHeader, ale co bym nie wpisał (lub całkiem usunął) i tak efekt jest ten sam. Javascript wyświetla mi że jest OK (czyli kod 4 i status 200), ale odbioru po stronie php nie ma. Natomiast przyznaję, że nie mam pojęcia, co tu podać jako klucz dla $_POST.
Drugi sposób, jakiego próbuję to jest Ajax:
$.ajax({
url: "saveResult.php",
method: "post",
data: JSON.stringify(array),
beforeSend: function(){
console.log("Przed wysłaniem");
},
error: function(){
console.log("Błąd");
},
succes: function(res){
console.log("Poszło res: " + res);
}
})
Tutaj z kolei nie odpala się funkcja wyświetlana po sukciesie, czyli rozumiem, że się w ogóle nie wysyła.
Po stronie PHP wygląda to tak (żadnej filozofii):
<?php
$tablica_scrolli = json_decode($_POST['myArray']);
print_r($_POST);
echo '<br><br>';
var_dump($_POST);
?>
Przy próbie uruchomienia od razu wyskakuje błąd "Notice: Undefined index: myArray in"; A print_r i var_dump pokazują, że tablica $_POST jest pusta (czyli dane nie dotarły).
Obejrzałem ze sto filmów, przeczytałem ze sto tutoriali i odpowiedzi na róznych forach. WSZĘDZIE odpowiedzi pomijają wysyłanie tablicy z podaniem klucza dla POST.
Czy ktoś może mi powiedzieć, jak to rozwiązać?
Aha. Metoda wysyłająca nie jest wywoływana w żadnym formularzu, tylko bezpośrednio z :
<button class = "baton" onclick="exchange()">Zapisz</button>
Dodam, że nie jestem jakimś orłem w PHP i Javascripcie. Raczej uczę się ich teraz, bo taka wyskoczyła potrzeba. Bardziej dłubię w C# :)