【问题标题】:Return a JSON string from PHP从 PHP 返回一个 JSON 字符串
【发布时间】:2015-04-07 15:12:17
【问题描述】:

我附上这篇笔记的代码的目的是 1) 以表格形式收集数据。 2)发布到一个PHP文件,收集的信息被转换成一个JSON 3) 将 JSON 信息写入文件`` 4) 返回当前的JSON,写入HTML中名为the-return的ID。

除了第 4 步之外,上述所有方法都有效,我似乎可以找到错误。我希望有人能看看并告诉我我误入歧途的地方。 .我知道我可以将 JSON 数据写入文件,然后将文件的全部内容读取到 jsonReadArea 。我还希望能够从 PHP 文件中将当前 JSON 返回到 jQuery 成功函数并显示它。昨晚用调试器进一步调查,我似乎返回了一个对象,并且没有被正确访问。 在 HTML 中,你会发现一个名为“the-return”的文本,上面写着“HTML 在成功时被替换。在 jQuery post 函数中,你会看到成功和错误返回都尝试写入 this 。我不这样做”正确的做法是在 PHP 文件中,如果成功则将 JSON 发送回 jQuery 帖子,如果不成功则返回错误语句并写入“the-return”DIV 区域。 javaScript jQuery:

$("#Jform").submit(function()){
    data = $('#Jform').serialize();
    $.ajax({
        type: "POST",
        dataType: "data",
        url: "processJson.php",
        data: data,
        success: function (msg) {
            displayRet(msg);
        },
        error: function (msg) {
            console.log(msg);
            $("#the-return").html(msg);
        }
    });
    return false;
});
//  load() functions
$('#jsonReadButton').click(function () {
    $('#jsonReadArea').load('storage/jsonStorage.txt');
});

function displayRet(inc) {
    $("#the-return").html(
        "Return String: Name: " + inc["name"] +
        "<br />Email: " + inc["email"] +
        "<br />Gender: " + inc["gender"] +
        "<br /Temperature: " + inc["temperature"] +
        "<br />terms " + inc["terms"] +
        "<br />JSON: " + inc["json"]
        );
alert("Form submitted successfully.\nReturned json: " + inc);
}

现在是 PHP 代码:

<?php
/*
* PHP Filters
* http://www.w3schools.com/php/php_filter.asp
*
*/
$error = FALSE;

$name = filter_input(INPUT_POST, "name", FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);
$gender = filter_input(INPUT_POST, "gender", FILTER_SANITIZE_STRING);
$temperature = filter_input(INPUT_POST, "temperature", FILTER_SANITIZE_STRING);
$terms = filter_input(INPUT_POST, "terms", FILTER_SANITIZE_STRING);

$tempArray = array("name" => $name, "email" => $email, "gender" => $gender, "temperature" => $temperature, "terms" => $terms);
$jsonVal = json_encode($tempArray);
// Open file and test operation
$fileHandle = fopen('storage/jsonStorage.txt', "a");
if (!$fileHandle) {
    $error = TRUE;
} else {
    fwrite($fileHandle, $jsonVal);
    fwrite($fileHandle, "<br />\n");
}

if ($error === FALSE) {
    return $jsonVal;
} else {
    return "An error occured";
}

【问题讨论】:

    标签: php jquery json post


    【解决方案1】:

    您正在返回值(因为您不在函数中,所以无处返回)而不是 print将其返回到输出流。

    您还忘记更改默认的 text/html 的 Content-Type 标头:

    header("Content-Type: application/json");
    

    【讨论】:

    • 这条线在哪里。 header("Content-Type: application/json");
    • OK 找到了这个的用法。
    • 我不明白如何在从 PHP 文件返回后将返回的 JSON 放入我的 HTML 中。我想同时处理 PHP 文件中的成功和错误,并将返回值插入到
      code// 没有错误 if (empty($errors)) { header('Content-Type: application/json ');回声 $jsonVal; // 一些错误 } else { $msg = ''; foreach ($errors as $e) { $msg .= "$e
      "; } 回声 $msg; }
    【解决方案2】:

    你需要做的是一个简单的回显,像这样:

    回声 $jsonVal;

    然后在 javascript 端,您可以使用 JSON.parse 函数获取此 json

    【讨论】:

    • 我在 developer.mozilla.org 上查找了 JSON.parse,但在我的上下文中没有看到它的用法。可以在success函数上写一点代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多