PHP中的JSON对象解析

问题描述 投票:-1回答:1

我将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';

            }


}
?>
javascript php
1个回答
0
投票

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

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

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

顺便说一下这个sql语句,你不会受到sql注入的保护。使用这样的东西:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.