【问题标题】:Send data to json file using jquery/ajax and php使用 jquery/ajax 和 php 将数据发送到 json 文件
【发布时间】:2015-11-25 20:49:00
【问题描述】:

我在使用 ajax/jQuery 和 PHP 写入 JSON 文件时遇到了一些问题。 我目前的代码是:

jQuery

 var object = {
    name: 'John',
    occupation: 'Lawyer'
}

$(".testing-php").click(function () {
    $.ajax({
        type: 'POST',
        data: {params:object},
        url: 'details.php',
        success: function (data) {
        console.log(object);
        alert('success');
        },
        error: function () {
            alert('error');
        }
    });

这部分似乎工作正常,因为 console.log 语句正确显示 - {"name":"John","occupation":"Lawyer"}

我的 PHP 文件目前是这样的:

      <?php
var_dump($_POST);
if (isset($_POST['params']) && strlen($_POST['params'])) {
    $params = $_POST['params'];
    $jsonObject = json_encode($params);
    if (is_writable('js/details.json')) {
        file_put_contents('js/details.json', $jsonObject);
        echo "success";
    } else {
        echo "file is not writable, check permissions";
    }
} else {
    echo "invalid params";
}
?>

最后,当前的 JSON 文件如下所示:

{
"name": "Neil",
"occupation": "web developer"
}

更新

这是 var_dump($_POST) 显示的信息。连同消息 .invalid params'。

array(1) {
  ["params"]=>
  array(2) {
  ["name"]=>
string(4) "John"
["occupation"]=>
string(6) "Lawyer"
}
}
invalid params

AJAX 请求参数位于两个不同的行,显示为

参数[名称]:“约翰”

参数[职业]:“律师”

我现在只是对值进行硬编码,直到我让流程正常工作。谁能告诉我我在这里做错了什么,因为 JSON 文件没有被写入?

非常感谢

【问题讨论】:

  • 肯定有问题,John the Lawyer 正在以 Neil 网络开发人员的身份写入文件...... :-)
  • 这只是我放入文件中的一些 json,将被写入其中的新 json 替换
  • 我知道,开玩笑的。尝试在data: params,下添加processData: false,
  • 运气不好,谢谢。它似乎可以很好地发布到 php 文件,但此时似乎有一些错误
  • 在 php 中只是 var_dump($_POST);看看会发生什么

标签: php json ajax


【解决方案1】:

在这个测试中,一个额外的! 让你得到了与你想要做的完全相反的事情(读作“不”),删除它应该会有所帮助。还添加/更改了一些测试。

在 ajax 查询中输出一些内容也是一种很好的做法,这样您就可以在浏览器开发工具中从服务器获得一些反馈。

<?php
var_dump($_POST);

if (isset($_POST['params'])) {
    $params = $_POST['params'];
    $jsonObject = json_encode($params);
    if (is_writable('js/details.json')) {
        file_put_contents('js/details.json', $jsonObject);
        echo "success";
    } else {
        echo "file is not writable, check permissions";
    }
} else {
    echo "invalid params";
}

更新:还更新了您的 jQuery 代码以在 params 键下传递 params 变量,以便在服务器端正确获取它(顺便说一下,不需要字符串化为 json, jQuery 代表你做):

    var object = {
        name: 'John',
        occupation: 'Lawyer'
    }

    $(".testing-php").click(function () {
        $.ajax({
            type: 'POST',
            data: {params:object},
            url: 'details.php',
            success: function (data) {
                console.log(params);
                alert('success');
            },
            error: function () {
                alert('error');
            }
        });

更新:还删除了一个测试以容纳数组类型的$_POST['params']

【讨论】:

  • 抱歉,我以为已经解决了问题,但不幸的是它仍然无法正常工作..
  • 更新了我的答案,请试一试,看看会发生什么。我不能向你保证一切都已解决,但至少我们可能知道出了什么问题。
  • 仍然无法正常工作。我在哪里可以看到正在执行哪个 echo 语句,我可以知道错误发生在哪一点?目前,我只是单击 html 页面上产生警报“成功”的按钮,然后检查 json 文件以查看它是否已更新。
  • 在您的浏览器中,chrome 中的更多工具/开发工具,firefox 中的 firebug 控制台/http。这些是 ajax 开发的必备品。
  • 我现在看到了回复。它说“无效参数”
【解决方案2】:

您可能希望进行一些验证以确保您的参数安全到达那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2023-04-07
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多