Создать специальный файл JSON с JQuery AJAX и PHP - PullRequest
1 голос
/ 31 октября 2019

у меня есть следующий формат файла json:

{       
"Deutsch":"German",
"Englisch":"English",
"Französisch":"French",
"Spanisch":"Spanish",
}

Теперь я хочу прочитать этот файл и распечатать его в textareas на моем веб-сайте с PHP:

$file = '../js/json/en.json';
$json = file_get_contents($file);
$obj = array();
$obj = json_decode($json, true);

$output .= "<table style='width:100%'>";
$output .= "<tr>";
$output .= "<th>German</th>";
$output .= "<th>English</th>";
$output .= "<th>Your Language</th>";
foreach($obj as $key => $val) {
    $output .= "<tr><td><textarea class='german' style='width:100%;' readonly>".$key."</textarea></td><td><textarea class='english' style='width:100%' readonly>".$val."</textarea></td><td><textarea class='new_lang' style='width:100%'></textarea></p></td></tr>";
}
$output .= "</table>";

, который работает хорошодо сих пор.

После этого мне нужно прочитать содержимое двух текстовых областей выше и записать его в новый файл json того же формата. Это та часть, где у меня проблемы до сих пор:

$("#save_translation").on("click", function() {

        let obj = {};
        $(".new_lang").each(function() {
            var te = $(this).parents("tr").find(".german").val();
            var tt = $(this).val();
            obj = {...obj, [te]:tt};
        });
        //console.log(obj);

        $.ajax({
           type: "POST",
           url: "/trans.php",
           dataType: "json",
           data: {myData:obj},
           contentType: "application/json; charset=utf-8", // php://input
           success: function(data) {  
                console.log("test: ", data);
            }
        });

    });

и файл trans.php:

$myArray = $_POST['myData'];
$posts = array();
foreach($myArray as $key => $value) {
    //array_push($posts, $key .":". $value);
    $posts[] = array("$key" => "$value");
}
var_dump( $myArray);

$fp = fopen('js/json/tfr.json', 'w');
fwrite($fp, json_encode($posts));
fclose($fp);

Есть ли у кого-нибудь советы о том, как сделать это правильно, чтобы получить то же самое? формат, как указано выше ??

Заранее спасибо.

1 Ответ

0 голосов
/ 31 октября 2019

Вы можете изменить

$posts[] = array("$key" => "$value");

на

$posts[$key] = $value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...