我在使用脚本向PHP发送一些信息时遇到了一个奇怪的问题。我说这很奇怪,因为此代码是同一应用程序上某些已经工作的代码的直接副本,带有新的变量名。我需要将少量数据上传到我的服务器,并且当值存在并且代码一直运行时,POST数据没有发送或发生了什么。我检查了一下,并说它已经使用值提交给了我的PHP,但是什么也没发生。如果我对某些格式有疑问,我正在使用Vue.js
我尝试在线查看其他示例,但是我的事情是,这是从应用程序的工作部分复制的代码块。它可以一直工作到从JS-PHP传输数据为止
JS
editDisplayName: function() {
var self = this;
var newName = prompt("10 Characters Max, 3 Min", "Enter Display Name");
if(newName.length <= 10 && newName.length >= 3 ) {
var sendData = new XMLHttpRequest();
sendData.open("POST", "primary.php", true);
sendData.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
sendData.send(newName);
self.username = window.localStorage.getItem('username');
window.localStorage.clear();
}
}
PHP
function changeUsername() {
// Connect to Server
$link = // Commented Out For Security;
if (mysqli_connect_error()) {
die ("DB Connection Error");
}
$newName = $_POST['newName'];
$newName = mysqli_real_escape_string($link, $newName);
$token = $_COOKIE['validToken'];
$token = mysqli_real_escape_string($link, $token);
$query = "UPDATE userData SET username = '$newName' WHERE token = '$token' LIMIT 1";
mysqli_query($link, $query);
mysqli_close($link);
echo("
<script>
var username = $newName;
window.localStorage.setItem('username', username);
</script>
");
}
if(isset($_POST['newName'])) {
changeUsername();
}
我期望在我的DOM上设置新的用户名,而不是空白。东西停止工作的地方是发送POST数据的地方,因为我的PHP没有拾取任何东西,但是我无法弄清楚出了什么问题。
答案 0 :(得分:1)
除了发送值之外,还应该发送参数名称。
因此,不要使用sendData.send(newName);
,请尝试使用:
sendData.send("newName=" + newName);
(因为您的内容类型为application/x-www-form-urlencoded
)
或者如果您想使用JSON:
将您的内容类型更改为application/json
,然后将数据作为JSON字符串发送,如下所示:
sendData.send(JSON.stringify({'newName': newName}));