/ / Zapisywanie pliku JSON na serwerze z połączonego ciągu w Javascript / AJAX - jquery, ajax, json

Zapisywanie pliku JSON na serwerze ze sprzężonego łańcucha w JavaScript / AJAX - jquery, ajax, json

Generuję połączony ciąg w Javascript:

var result = "";
for (i = 0; i < j.result.length; i++) {
// bunch of string formatting code here
result += stringAsWeGo;
}

Ten „wynikowy” ciąg jest obiektem tekstowym sformatowanym tak, aby wyglądał jak JSON ... Chcę zapisać ten ciąg jako plik .json na moim serwerze. Używam więc AJAX i PHP w ten sposób:

var obj = JSON.parse(result);

$.ajax({
url: "json.php",
data: obj,
dataType: "json",
type: "POST"
});

Gdzie mój plik json.php wygląda tak:

<?php

$json = $_POST["json"];
$file = fopen("jsonfile.json", "w+");
fwrite($file, $json);
fclose($file);

?>

Ale nic nie zapisuje na serwerze. Istniejący pusty plik jsonfile.json jest pusty i nie zawiera w nim json.

Odpowiedzi:

1 dla odpowiedzi № 1

Wygląda na to, że nie masz nazwy json więc spróbuj

//var obj = JSON.parse(result);

$.ajax({
url: "json.php",
data: {
json: result
},
dataType: "json",
type: "POST"
});

Uwaga: Nie twórz obiektu json przy użyciu konkatenacji łańcuchów. Możesz utworzyć obiekt, a następnie użyć JSON.stringify() aby wysłać wartość do serwera jako wartość param.

var obj = {};

//do some processing here which adds some properties to obj like
obj.name = "x";
obj.id = 4

$.ajax({
url: "json.php",
data: {
json: JSON.stringify(obj)
},
dataType: "json",
type: "POST"
});