AJAX 发布致命错误列不能为空
Posted
技术标签:
【中文标题】AJAX 发布致命错误列不能为空【英文标题】:AJAX Post Fatal Error Column Cannot Be Null 【发布时间】:2019-12-05 20:25:30 【问题描述】:我收到一个致命错误,“列不能为空。”
index.php
<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>
ajax.php
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;
fwiw:connect_to_database.php
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() . ".";
MySQL 表架构
它说罪魁祸首是sld
,所以好像没有任何数据被向前传递。
responseText
也是空白。
我也使用$_POST
得到完全相同的错误。
var_dump($_REQUEST)
和 var_dump($_POST)
在响应中都返回空数组。
我尝试在帖子字符串上使用encodeURIComponent
,但没有成功。
值得注意的是,如果我删除 var_dump
语句,我会收到 500 错误(内部服务器错误)。
可能是我没有发送所有必要的标头吗?
我到底做错了什么让数据不能被转发?
【问题讨论】:
你不应该使用$_POST
而不是$_REQUEST
吗?
@Jaquarh 我试过$_POST
,完全相同的错误。我实际上刚刚完成了更新我的问题
var_dump($_POST)
给你什么?你也不能使用JQuery吗? $.post()
@Jaquarh 我也不知道。我在这里联系了一位朋友,他的程序员比我好得多,所以也许地狱能够发现问题
@Jaquarh 已解决。检查答案。你会想把你的头撞到墙上大声笑
【参考方案1】:
您使用了错误的请求标头。 改成
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
而不是
applications/x-www-form-urlencoded
注意这里的's'。
我想你可能不需要
$_POST
和 $_REQUEST
同一时间。因此,您可以删除其中之一。
【讨论】:
太老兄了。我已经在这里待了几个小时了,哈哈 享受这一天:)以上是关于AJAX 发布致命错误列不能为空的主要内容,如果未能解决你的问题,请参考以下文章
AJAX Post 请求错误:“不能为空”,[验证::required] 在 POST 正文中发送 JSON 对象时
错误:目标文件为空 .git/objects/../.. 为空 - 致命:松散的对象...已损坏
Laravel 7 错误 - SQLSTATE [23000]:完整性约束违规:1048 列 'first_name' 不能为空
在 symfony2 和 Doctrine 应用程序中出现“列不能为空”错误