Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP中的JSON对象解析_Javascript_Php - Fatal编程技术网

Javascript PHP中的JSON对象解析

Javascript PHP中的JSON对象解析,javascript,php,Javascript,Php,我正在向服务器发送JSON数据(HTML/JavaScript),并尝试在服务器上解析相同的JSON(PHP) 当数据发送到服务器时,我不确定是否接收到密钥和值对?代码执行得不完美 虽然我在客户端,但我看不到错误,因为PHP代码在服务器端执行,没有发送任何响应。请看我在哪里犯了错误 在HTML/JS中 function processJSON(str){ var res = str.substring(0, str.length-1); var message = "'{ " + res +

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

当数据发送到服务器时,我不确定是否接收到密钥和值对?代码执行得不完美

虽然我在客户端,但我看不到错误,因为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';

            }


}
?>

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

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

如果仍然存在问题,请尝试在foreach语句之前使用
var\u dump($decoded)
显示
$decoded
的内容

顺便说一句,小心使用此sql语句,您不会受到sql注入的保护。使用类似以下内容:

$safe_key = mysql_real_escape_string($key);
$safe_value = mysql_real_escape_string($value);
然后在SQL语句中使用这些安全变量。
希望这能帮助你

第一步是首先确认PHP文件是否确实接收到了数据。当您对$data和$decoded进行变量转储或打印时会发生什么情况?另外,打开错误报告,看看会出现什么情况。另外,为什么要对数据使用文件内容,为什么不在$POST请求中发送它?还有
str
的值是多少?为什么在您立即执行
JSON.stringify
之后要调用
JSON.parse
?为什么
message=“{+res+”}”
?为什么用撇号?以这种方式生成的字符串不是有效的JSON。如果我们不知道
str
的值,我们就无法真正帮助您。“在PHP中,当您发送JSON数据时,您可以使用$\u POST访问它,JSON解码已经为您完成了。”--完全错误。axiac我从未指定JSON\u decode()在我的脚本中,我一直使用Ajax发送json数据,并直接使用$\u POST检索内容,你能解释一下吗?我不使用任何框架,也许是Jquery,但有时我使用JavaScript,不需要解码json,它已经在$\u POSTjQuery的关联数组中可用,JavaScript在浏览器中运行
$\u POST
位于服务器上,使用PHP。PHP在服务器上运行,它不关心浏览器中发生了什么。事实上,在另一端不需要浏览器。我知道这一点,我想说的是,也许Jquery或JavaScript xhr请求发送编码的数据,php对其进行解码,并将其呈现在关联数组$\u POST中。我从未使用json_decode来检索json中发送的数据。但是我使用了json_encode来回复客户机。我所有的网站都运行得很好