javascript - 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';
}
}
?>
解决方案
尝试application/json
在 JS 中指定内容类型:
在 PHP 中,当您发送 json 数据时,您可以使用 访问它$_POST
,json decode 已经为您完成。
如果您仍然有问题,请尝试在 foreach 语句之前显示$decoded
with a的内容。var_dump($decoded)
顺便说一句,小心使用这条 sql 语句,您不会受到 sql 注入的保护。使用这样的东西:
$safe_key = mysql_real_escape_string($key);
$safe_value = mysql_real_escape_string($value);
然后在您的 SQL 语句中使用这些安全变量。希望这可以帮到你 ?
推荐阅读
- xml - 如何在 XQuery 中的节点后插入新的 ELEMENT?
- powershell - 如何使用正确的编码进行读写?
- r - 新数据因子中的决策树级别与原始数据不匹配
- java - AWS RDS 始终使用 Spring Boot (JPA) 打开 10 个连接
- java - Java用填充零的整数替换字符串中的主题标签
- java - 带有适用于 windows 的 icedtea 插件的 Open-JDK 安装程序
- c# - 在服务器模型中未正确接收 MVC 日期
- python - 从 html 中检索文本不适用于 python
- reactjs - 子组件未在反应 js 中呈现
- java - 休眠异常:无法提交 JPA 事务;嵌套异常是 javax.persistence.RollbackException: Error while committing the transaction