Autor Zpráva
noris
Profil
Ahoj,
předávám array objekt z javascriptu do php souboru.

Zde je kód, který ajaxem posílám php souboru:
$.ajax({
                url: 'result.php',
                data: pchecked,
                type: "POST",
                success: function() {
                $( "#listresult" ).load('result.php');
                },
            });

Zde je kód, kterým se snažím zpracovat objekt phpkem
<?php 
$data = json_decode($_POST['data'], true);
$blank = json_decode($_POST[''], true);
$pchecked = json_decode($_POST['pchecked'], true);
var_export($data);
var_export($blank);
var_export($pchecked);
echo $data['0'];
echo "_";
echo $blank['0'];
echo "_";
echo $pchecked['0'];
?>

Živá ukázka zde Po zakliknutí programů, se má odeslat a jejich id by se měla vypsat (nad notebookem, který se zobrazí). Ale stále mi to hází NULL :/
Alphard
Profil
V post požadavku se odesílá undefined=&undefined=. Chyba je někdo v tom javascriptu. Přesunu tohle vlákno z PHP do JS.
_es
Profil
noris:
Prečítaj si dokumentáciu k funkcii, čo používaš na odosielanie požiadaviek (api.jquery.com/jQuery.ajax).
Z nej:
If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below).
...
traditional
Type: Boolean
Set this to true if you wish to use the traditional style of param serialization.

A trebárs $.param([false,false]) dá výsledok "undefined=&undefined=".
noris
Profil
zkoušel jsem nastavit
traditional: true
dále jsem našel, že stringify většině lidem problém vyřešilo
JSON.stringify(pchecked),

ale ani jedno z těchto řešení nepomáhá, php stále vyhazuje NULL
_es
Profil
noris:
Čo si tak tú dokumentáciu lepšie naštudovať? Skontroloval si si, aké dáta dávaš do tej jQuery funkcie a naštudoval si si, aké by mali naozaj byť? Či už ako pole (Array) alebo ako objekt.

zkoušel jsem nastavit
traditional: true
To ti nikto neradil. Z akého dôvodu si to skúšal?
noris
Profil
_es:
Asi už to vidím, vkládám tam array, přitom tam má být buď plainobject nebo string.
To array by se tedy mělo překonvertovat do objektu, o to by se mělo ale postarat JSON.stringify, které nefunguje..
_es
Profil
noris:
To array by se tedy mělo překonvertovat do objektu, o to by se mělo ale postarat JSON.stringify
Viď: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify - to vytvorí z nejakého objektu či hodnoty textový reťazec. V dokumentácii aj v príkladoch k jQuery.ajax máš vysvetlené, ako môžeš odosielané dáta, ak nie sú ako obyčajný text, reprezentovať pomocou objektu a ako pomocou poľa.
noris
Profil
Tak již to funguje:
$.ajax({
                url: 'result.php',
                data: { id : pchecked },
                type: "POST",
                success: function(pchecked) {
                $( "#listresult" ).html(pchecked);
                },
            });
a php
$data = var_dump($_POST['id']);
json_encode($data);

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: