Gratidão lowys , obtive sucesso quando envidi pouco dado, mas ao enviar um objeto json (uma grande string) via ajax para gravar no servidor não obtive o mesmo resultado.
Criei duas funcoes JS que geram dois resultados diferentes, a primeira genScene() gera o volume de dado que preciso gravar num arquivo no servidor. A segunda, anyString() gera um volume bem pequeno de dado, ela foi criada só pra testar mesmo.
Quando envio os dados gerados pela segunda função tudo ocorre como esperado, os dados são enviados via ajax e recebidos no php perfeitamente. Mas quando uso a primeira função, que gera um volume de dados maior, nada ocorre!
Acho que tem a ver com a quantidade quantidade de dado passado. Tentei alguma variações no uso de GET e POST, mas ainda não consegui resolver.
Alguém sabe me dizer o que está acontecendo e onde estou errando?
Seguem os códigos
<?php
phpinfo();
$myFile = "meunovoarquivo.json";
$fh = fopen($myFile, 'w');
$stringData = $_POST["data"];
$stringData = json_encode($stringData);
fwrite($fh, $stringData);
fclose($fh);
echo "<script type='text/javascript'>alert('ok!');</script>";
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" name="viewport=" content="width=device-width, initial-scale=1, text/html; charset=iso-8859-1">
<script src="./public/js/vendor/jquery-2.2.1.js"></script>
<script src="./public/js/vendor/three.js"></script>
<script src="./public/js/vendor/OrbitControls.js"></script>
</head>
<body>
<h3>Salvar JSON</h3>
<a href="" onClick="save('returned.php')"><h1 type="button" style="background: #bbb">PHP</h1></a>
<br>
<div class="result">
[HTML sera substituida em caso de sucesso.]
</div>
<canvas id="cena3d" style="background: #ccc"></canvas>
</body>
<script type="text/javascript">
function genScene() {
var output = Cena.toJSON();
try {
output = JSON.stringify( output, null, '\t' );
output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
} catch ( e ) {
console.log("Erro: " + e);
output = JSON.stringify( output );
}
console.log(output);
return(output);
//saveString( output, 'scene.json' );
}
function anyString() {
var output = JSON.stringify(Cam["uuid"]);
return(output);
}
function save(_php) {
if (!_php)
{_php = 'returned.php';}
_data = anyObject();
// alert("php : " + _php + "\ndata : " + _data);
alert("php : " + _php + "\ndata : " + _data);
$.ajax
({
type: "POST",
dataType : 'json',
// async: false,
url: _php,
data: { 'data': _data },
success: function () {alert("Sucesso!");},
failure: function() {alert("Falha!");}
});
}
/// ini three.js
function iniThreeJS() {
cena3d = document.getElementById('cena3d');
render4d = new THREE.WebGLRenderer({canvas : cena3d});
render4d.name = "Render4d";
Cena = new THREE.Scene();
Cena.name = "Cena4D";
Cam = new THREE.PerspectiveCamera();
Cam.name = "Camera"
Cam.position.set(25,10,25);
Cam.lookAt (new THREE.Vector3 (0.0, 10.0, 0.0));
grid = new THREE.GridHelper(100,10);
grid.name = "Grid";
Cena.add(grid);
Cena.add(Cam);
}
function render() {
$(document).ready(function() {
requestAnimationFrame(render);
render4d.render(Cena, Cam);
});
}
iniThreeJS();
render();
</script>
</html>