我遇到一个致命错误,“列不能为空。”
<head>
<script>
let xhr = window.XMLHttpRequest
? new XMLHttpRequest()
: new ActiveXObject('Microsoft.XMLHTTP')
xhr.open('POST', 'ajax.php', true)
xhr.setRequestHeader('content-type', 'applications/x-www-form-urlencoded')
xhr.send('sld=testing&tld=com®istrar=namecheap')
</script>
</head>
var_dump($_POST); // without these var_dumps
var_dump($_REQUEST); // i receive a 500 error (internal server error)
if ($_SERVER["REQUEST_METHOD"] === "POST"){
include "includes/connect_to_database.php";
$pdo = $connection->prepare("INSERT INTO domains (sld, tld, registrar) VALUES (:sld, :tld, :registrar)");
$pdo->execute(array(
":sld" => $_REQUEST["sld"],
":tld" => $_REQUEST["tld"],
":registrar" => $_REQUEST["registrar"]
));
$connection = null;
}
try {
$connection = new PDO("mysql:host=$dbhost; dbname=$dbname; charset=utf8", $dbuser, $dbpass);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully!";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage() . ".";
}
sld
,所以好像没有任何数据向前传递。responseText
也为空。$_POST
得到了完全相同的错误。 var_dump($_REQUEST)
和var_dump($_POST)
都在响应中返回空数组。 encodeURIComponent
,但没有用。 var_dump
语句,则会收到500错误(内部服务器错误)。是不是我没有发送所有必要的标头?
对于不转发数据我到底在做错什么?
答案 0 :(得分:2)
您使用了错误的请求标头。 将其更改为
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
代替
applications/x-www-form-urlencoded
在这里注意一个“ s”。
我认为您可能不需要
$_POST
和$_REQUEST
同时进行。因此,您可以删除其中之一。