PHP通过AJAX编写JSON文件

时间:2016-01-07 13:49:27

标签: php jquery json ajax post

我想通过jQuery / Ajax将一些数据发布到JSON文件中,但我不会将数据作为JSON对象接收。

我的JSON内容如下所示:

  

富= ABC&安培;巴= DEF

但我想要这个:

  

{       "富" :" abc",       "杆" :" def     }

HTML

<form id="foobar">
    <label for="bar">A bar</label>
    <input id="foo" name="foo" type="text" value="" />
    <input id="bar" name="bar" type="text" value="" />
    <input type="submit" value="Send" />
</form>

JS

        var request;

        $("#foobar").submit(function(event){

        if (request) {
            request.abort();
        }
        var $form = $(this);
        var serializedData = $form.serialize();

        request = $.post("dataSaveAjax.php", {json : JSON.stringify(serializedData)});

        event.preventDefault();
    });

PHP

<?php
$file = fopen("dataAjax.json","w+");

$json = $_POST['json'];

$jsonDecode = json_decode($json);

fwrite($file, $jsonDecode);
fclose($file);

?>

2 个答案:

答案 0 :(得分:1)

如果您想使用serialize,请使用

var data= JSON.parse($("#foobar").serializeArray()); //not serialize()
  

如果对象/数组通过here,那就是   通过.serializeArray()序列化。

     

如果字符串传递$.param(),则它不会执行任何操作   进一步

您的代码应为

    var request;

    $("#foobar").submit(function(event){

    if (request) {
        request.abort();
    }
    var data= {
         "foo":$("#foo").val(),
         "bar":$("#bar").val()
     };
    //don't do this if you want in json formate
    //var serializedData = $form.serialize();

    request = $.post("dataSaveAjax.php", {json : JSON.stringify(data)});

    event.preventDefault();
});

或您可以使用

var serializedData = $form.serializeArray();

答案 1 :(得分:-1)

由于JS中的JSON.stringify调用,您的数据应该已经格式化为JSON。 PHP文件中的json_decode正在撤消JSON.stringify的工作 - 只需将$_POST['json']的值写入文件即可。您应该很好。

<?php

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

应该是你需要在PHP方面做的所有事情。