首页 > 解决方案 > PHP 中的 JSON 对象解析

问题描述

我正在将 JSON 数据发送到服务器(在 HTML/JavaScript 中)并尝试在服务器上解析相同的 JSON(在 PHP 中)。

当数据发送到服务器时,我不确定是否收到了 Key & Value 对?代码没有完美执行

虽然我在客户端,但我看不到错误,因为 PHP 代码在服务器端执行并且没有发回任何响应。请看看我在哪里犯错

在 HTML/JS 中

function processJSON(str){

var res = str.substring(0, str.length-1);
var message = "'{ " + res + " }'";
var JSONobj = JSON.parse(message);

        var xhr = new XMLHttpRequest();

        xhr.open('POST', 'https://www.example.com/wp-content/plugins/cards-display/process_cards.php');
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.onload = function() {
            if (xhr.status === 200 && xhr.responseText !== newName) {
                alert('Something went wrong. ' + xhr.responseText);
            }
            else if (xhr.status !== 200) {
                alert('Request failed.  Returned status of ' + xhr.status);
            }
        };

        var data = JSON.stringify(JSONobj);
        xhr.send(data);

}

在 PHP 中

<?php

error_reporting(E_ALL); 
ini_set('display_errors', 1); 
$data = file_get_contents('php://input');
header('Content-Type: application/json');
$decoded = json_decode($data, true);
var_dump($decoded); 
var_dump($data); 

foreach($decoded as $key => $value) 
{

            $link = mysqli_connect($hostname, $username, $password, $database);
            $sql = "UPDATE wp_assign_cards_numbers SET numbers ='".$value."' WHERE cards = '".$key."'";

            if ($link->query($sql) === TRUE) {
                echo ' Record Updated Successfully';

            }


}
?>

标签: javascriptphp

解决方案


尝试application/json在 JS 中指定内容类型:

在 PHP 中,当您发送 json 数据时,您可以使用 访问它$_POST,json decode 已经为您完成。

如果您仍然有问题,请尝试在 foreach 语句之前显示$decodedwith a的内容。var_dump($decoded)

顺便说一句,小心使用这条 sql 语句,您不会受到 sql 注入的保护。使用这样的东西:

$safe_key = mysql_real_escape_string($key);
$safe_value = mysql_real_escape_string($value);

然后在您的 SQL 语句中使用这些安全变量。希望这可以帮到你 ?


推荐阅读