【问题标题】:Sending JSON(jQuery) to PHP and decoding it将 JSON(jQuery) 发送到 PHP 并对其进行解码
【发布时间】:2010-05-10 06:39:46
【问题描述】:

我终其一生都无法弄清楚我做错了什么。看起来应该很简单,因为我找不到其他人遇到这个问题,但我不知道通过 javascript(jQuery) 将基本数据发送到 PHP 并对其进行解码。为了简单起见,这就是我所拥有的:

JAVASCRIPT

var json_data = { "name" : "john doe" };

$.ajax({
    type: "POST",
    url: "../bin/process.php",
    dataType: "json",
    data: json_data
    });

和我的 PHP 文件

$arr = json_decode("json_data", true);

$fp = fopen('data.txt', "w");
fwrite($fp, $arr['name']);
fclose($fp);

我正在编写的文件最终没有任何内容。如果我这样做:

fwrite($fp, 'test');

我得到一个文件,其中包含 test 一词,但无论我做什么,我都没有收到我发送的 json 数据。

有人可以分享 A 到 Z 的完整示例吗?感谢您的帮助。

【问题讨论】:

    标签: javascript ajax json encoding


    【解决方案1】:

    您使用 jQuery 发出的 ajax 请求将发送参数“name”,其值为“john doe”,而不是整个对象。如果你想发送整个对象,你必须像这样传递它:

    data: { parameters: json_data }
    

    在 PHP 端,您可以从 $_POST 超全局变量中获取变量。使用您的示例,您将使用:

    $name = $_POST['name'];
    

    或者,如果您发送整个对象,使用我的示例:

    $params = $_POST['parameters'];
    

    没有必要使用 json_decode(),因为你从 $_POST 数组中取出的参数已经是原生 PHP 变量了。

    你只需要使用它,如果你有一个json字符串,你想把它变成一个PHP变量,这里不是这样,因为jQuery会将javascript对象“转换”为查询字符串背景。

    您需要以 JSON 格式从 javascript 发送数据的情况很少见,但如果您想这样做,您需要类似以下内容:

    // JS
    
    var person = "{ name: 'John Doe' }"; // notice the double quotes here, this is a string, and not an object
    $.ajax({
        type: "POST",
        url: "../bin/process.php",
        dataType: "json",
        data: { json: person }
        });
    
    // PHP
    
    $json = $_POST['json']; // $json is a string
    $person = json_decode($json); // $person is an array with a key 'name'
    

    【讨论】:

    • 谢谢,我想你已经回答了我的问题并为我澄清了很多。您能否举一个 JSON 编码的示例以及如何在 Javascript 中对某些内容进行编码并在 PHP 中对其进行解码?如果你能帮助我,我会检查你的答案是否正确。
    【解决方案2】:

    jQuery 无法将数据编码为 JSON,只能对其进行解码(名称不佳的 dataType 参数实际上是指响应的类型)。使用json2.js 进行编码。

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      相关资源
      最近更新 更多