我将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';
}
}
?>
尝试在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语句中使用这些安全变量。希望这可以帮到你 ?