使用javascript和php将json对象写入.json文件

时间:2012-03-14 19:31:44

标签: php javascript json

我需要使用javascript和php将json对象写入.json文件。 json对象似乎正确地存储了值,但是php文件似乎没有运行所以没有任何反应。

感谢。

我的javascript函数,在单击按钮时调用:

    function save_crime()
{
    //json object, v1, v2, v3 etc are variables whose values are set in a different function
    var jsonObject = { "crime" : {  "violence" : {  "violence1" : v1,
                                                    "violence2" : v2,
                                                    "violence3" : v3
                                    },

                                    "burglary" : {  "burglary1" : b1,
                                                    "burglary2" : b2
                                    },

                                    "robbery" :  {  "robbery1" : r1,
                                                    "robbery2" : r2
                                    },

                                    "criminal" : {  "criminal1" : c1,
                                                    "criminal2" : c2,
                                                "criminal3" : c3
                                    } 
                                } 
                    }



    //jQuery to post json object to json.php for writing to json file
    $.ajax({
        type : "POST",
        url : 'json.php',
        dataType : 'json', 
        data : {
            json : JSON.stringify(jsonObject)
        }
    });

}

用于写入.json文件的php文件:

<?php

$json = $_POST['json'];
$info = json_encode($json);

$file = "crimes.json";
$handle = fopen($file, 'w');
fwrite($handle, $info);
fclose($handle);

?>

1 个答案:

答案 0 :(得分:1)

您正在将 JSON字符串写入文件,您不需要将其解码为已经来自JS部分(JSON.stringify(jsonObject))的字符串。

直接写下来。

file_put_contents("crimes.json",  $_POST['json']);

最好从服务器获取响应,以便您知道该操作是否正确执行。使用$.post简写而不是$.ajax

$.post(
    'json.php',
    {
        json : JSON.stringify(jsonObject)
    },
    function (data, textStatus, jqXHR){
    }
);