PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Ilma JQueryta php $_POST keerukamate json'ide jaoks
Postitaja: möku 2019-01-16 11:14:33
Siin on üks php-kood, millel loodan saada lahendust, kuid file_get_contents('php://input') asemel $_POST'i vastavat array-d ei õnnestu saada. Et kuidas JQuery $.post töötab, on defineeritud (sealt koodist otse ei suuda välja lugeda).

<?php
if (isset($_GET['json']) && $_GET['json'] == 1) {
function fgc() {
$fgc = file_get_contents('php://input');
$arr = json_decode($fgc, true);
return json_last_error() == JSON_ERROR_NONE ? $arr : $fgc;
}
//Soovin saada, et $_POST = ['k1' => 1, 'k2' => array('k21' => 'v21', 'k22' => 'v22'), 'k3' => 23], praegu on array().
$json = ["response" => "OK", "POST" => $_POST, "GET" => $_GET, 'FGC' => fgc()];
header('Content-Type: application/json');
echo json_encode($json);
exit;
}
?>

Selle koha peal on väike katsetus.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSON-test</title>
</head>
<body>
<script>
function getXHR() {
try {
var xhr = new ActiveXObject("Msxml2.XMLHTTP");
console.log('ActiveXObject("Msxml2.XMLHTTP")');
return xhr;
} catch (e) {
try {
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
console.log('ActiveXObject("Microsoft.XMLHTTP")')
return xhr;
} catch (oc) {
if (typeof XMLHttpRequest !== "undefined") {
var xhr = new XMLHttpRequest();
console.log('XMLHttpRequest()');
return xhr;
} else {
alert("Your Browser not work width AJAX tecnology!");
return null;
}
}
}
}

function ajax(inp) {
var xhr = getXHR();
xhr.open("REQUEST", inp.url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
var json = JSON.parse(this.responseText);
console.log(json.FGC);
console.log(json);
}
}
xhr.send(JSON.stringify(inp.data));
}


var json = {
'k1': 1,
'k2': {
'k21': 'v21',
'k22': 'v22'
},
'k3': 23
};

ajax({
data: json,
url: 'json.php?json=1'
});

</script>
</body>
</html>
RE: Ilma JQueryta php $_POST keerukamate json'ide jaoks
Postitaja: Huh? 2019-01-17 18:43:53
TSITEERITUD:
Siin on üks php-kood, millel loodan saada lahendust, kuid file_get_contents('php://input') asemel $_POST'i vastavat array-d ei õnnestu saada. Et kuidas JQuery $.post töötab, on defineeritud (sealt koodist otse ei suuda välja lugeda).

<?php
if (isset($_GET['json']) && $_GET['json'] == 1) {
function fgc() {
$fgc = file_get_contents('php://input');
$arr = json_decode($fgc, true);
return json_last_error() == JSON_ERROR_NONE ? $arr : $fgc;
}
//Soovin saada, et $_POST = ['k1' => 1, 'k2' => array('k21' => 'v21', 'k22' => 'v22'), 'k3' => 23], praegu on array().
$json = ["response" => "OK", "POST" => $_POST, "GET" => $_GET, 'FGC' => fgc()];
header('Content-Type: application/json');
echo json_encode($json);
exit;
}
?>

Selle koha peal on väike katsetus.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSON-test</title>
</head>
<body>
<script>
function getXHR() {
try {
var xhr = new ActiveXObject("Msxml2.XMLHTTP");
console.log('ActiveXObject("Msxml2.XMLHTTP")');
return xhr;
} catch (e) {
try {
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
console.log('ActiveXObject("Microsoft.XMLHTTP")')
return xhr;
} catch (oc) {
if (typeof XMLHttpRequest !== "undefined") {
var xhr = new XMLHttpRequest();
console.log('XMLHttpRequest()');
return xhr;
} else {
alert("Your Browser not work width AJAX tecnology!");
return null;
}
}
}
}

function ajax(inp) {
var xhr = getXHR();
xhr.open("REQUEST", inp.url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
var json = JSON.parse(this.responseText);
console.log(json.FGC);
console.log(json);
}
}
xhr.send(JSON.stringify(inp.data));
}


var json = {
'k1': 1,
'k2': {
'k21': 'v21',
'k22': 'v22'
},
'k3': 23
};

ajax({
data: json,
url: 'json.php?json=1'
});

</script>
</body>
</html>

Erm... võibolla migreen teeb oma töö, aga ma ei näe praegu seal kusagil deklaratsiooni ega eventi mis peaks käsklusi rakendama. Lisaks ma ei näe mingit file uploadi või üldist formi. Üleüldse jääb kogu probleemi teke ning soovitud tulemus hetkel seletuste põhjal väga lahtiseks.Algse koodi järgi nagu kui oleks postimine selle php faili/url suunas peaks siis mingi faili avama, sealt sisu võtma, arg panema jne... That's not how it works.
RE: Ilma JQueryta php $_POST keerukamate json'ide jaoks
Postitaja: blaa 2019-01-19 18:32:30
Kui tahad, et oleks $_POST-is midagi, siis tuleb teha POST päring.
xhr.open("POST", inp.url?siia_urli_soovitud_masiiv, true);

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0854749679565