【问题标题】:Simple save to JSON file with JQuery使用 JQuery 简单保存到 JSON 文件
【发布时间】:2014-01-23 17:59:58
【问题描述】:

我已经尝试了所有可以使用的示例,但我不能简单地将 JSON 数据保存到主机上的 JSON 文件中。我想从一个尽可能简单的保存方法开始,这样我就有了一个起点。

这是我得到的: 基本上我的 index.html 中有一个按钮,单击该按钮应将数据保存到我的 general.json 文件(与 index.html 相同的位置)。

<button id="savebtn">Save</button>

myscript.js 中使用 id 选择器,我这样做:

$('#savebtn').click(function() {
                var saveit = $('#calendar').fullCalendar( 'clientEvents');

        var eventsholded = [];

    $.each(saveit, function(index,value) {
        var event = new Object();
        event.id = value.id;            
        event.start = value.start;
        event.end = value.end;
        event.title = value.title;
    event.allDay = value.allDay
        eventsholded.push(event);
    }); 
    $.ajax
    ({
        type: "GET",
        dataType : 'json',
        async: false,
        url: 'general.json',
        data: JSON.stringify(eventsholded),
        success: function () {alert("Thanks!"); },
        failure: function() {alert("Error!");}
    });

如您所见,我想存储来自 fullcalendar 的事件。这不是很相关,因为到目前为止它工作正常。 如果我在屏幕上提醒 JSON.stringify(eventsholded),你会看到:

[{"start":"2014-01-07T08:30:00.000Z","end":"2014-01-07T12:30:00.000Z","title":"Pumukli Pista","allDay":false},{"start":"2014-01-11T13:30:00.000Z","end":"2014-01-11T18:30:00.000Z","title":"Fanic Catalin","allDay":false}]

现在这正是我想以简单、快速、可能不安全但非常简单的方式保存到服务器的内容。这样我就可以开始了解它是如何工作的,只是为了让它我的 general.json 文件。

$.ajax 部分在我上面的代码中没有任何作用。甚至没有警告“错误”。其余代码按预期工作。

安全性现在不重要了。我只是想了解它是如何工作的。

我将不胜感激任何包含完整示例的帮助或有用的链接。谢谢!

【问题讨论】:

  • 我认为您不能以这种方式保存到文件中,因为您需要在另一端有一个网络服务器来进行保存(或者也许您有那个,我必须没看到)。但我注意到的是,您将general.json 称为具有json 属性的对象general,而不是文件名“general.json”。如果您打开控制台,您可能会看到错误消息“general.json 未定义”或类似内容。这就是您没有收到错误消息的原因。
  • url: general.json 在我的问题中是一个错误。现已编辑。好吧,我可以读取一个 json 文件,所以我想知道如何编写一个。我将所有这些都托管在网络服务器上,并使用 XAMPP 进行开发。现在我正在寻找实现保存/写入此 .json 文件的方法。

标签: jquery ajax json post


【解决方案1】:

$.ajax 单独不会保存 json 文件,您需要将url 属性指向服务器端脚本,即http://your.host/save_json.php,它将创建general.json 并在其上写入您的输出。比如:

PHP:

<?php
$myFile = "general.json";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_GET["data"];
fwrite($fh, $stringData);
fclose($fh)
?>

您还需要将 ajax 调用中的 data 属性更改为 data: {data: JSON.stringify(eventsholded)},以便为 GET 变量提供可以从 PHP 中检索到的正确名称:

JQUERY

$.ajax
    ({
        type: "GET",
        dataType : 'json',
        async: false,
        url: 'http://your.host/save_json.php',
        data: { data: JSON.stringify(eventsholded) },
        success: function () {alert("Thanks!"); },
        failure: function() {alert("Error!");}
    });

【讨论】:

  • 您可能希望使用 post 而不是 get(在 ajax 和 php 上),因此您不会尝试在 URL 参数中发送整个文件。
  • 好的。现在它正在创建 general.json 文件,但它是空的。我试图解决这个问题。到目前为止,这似乎是正确的方式。
  • 我疯了。无法传递值。我不知道 php 是否没有获取值或创建的 general.json 文件:(
  • 您是否将对象添加到数据属性中?检查更新的答案。
  • 我从没想过应该是data: {data: value to pass}。你需要更多的代表点。非常感谢!
猜你喜欢
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 2015-10-04
  • 2017-05-10
  • 2016-12-22
相关资源
最近更新 更多