Javascript 未通过XMLHttpRequest发送数据
我有一个奇怪的问题,我用脚本发送一些信息到我的PHP。我之所以说怪异,是因为这段代码是同一应用程序上一些已经在工作的代码的直接副本,带有新的变量名。我需要上传少量数据到我的服务器,虽然值在那里,代码一直在运行,但POST数据没有被发送或其他什么。我已经检查过了,它说它已经提交给了我的PHP,带有值,但什么也没发生。如果对我的某些格式有疑问,我将使用Vue.js 我曾尝试在线查看其他示例,但我的问题是,这是从我的应用程序的工作部分复制的代码块。它一直工作到从JS--PHP传输数据为止 JSJavascript 未通过XMLHttpRequest发送数据,javascript,Javascript,我有一个奇怪的问题,我用脚本发送一些信息到我的PHP。我之所以说怪异,是因为这段代码是同一应用程序上一些已经在工作的代码的直接副本,带有新的变量名。我需要上传少量数据到我的服务器,虽然值在那里,代码一直在运行,但POST数据没有被发送或其他什么。我已经检查过了,它说它已经提交给了我的PHP,带有值,但什么也没发生。如果对我的某些格式有疑问,我将使用Vue.js 我曾尝试在线查看其他示例,但我的问题是,这是从我的应用程序的工作部分复制的代码块。它一直工作到从JS--PHP传输数据为止 JS edi
editDisplayName:function(){
var self=这个;
var newName=提示(“最多10个字符,最少3个”,“输入显示名称”);
如果(newName.length=3){
var sendData=new XMLHttpRequest();
open(“POST”,“primary.php”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
sendData.send(newName);
self.username=window.localStorage.getItem('username');
window.localStorage.clear();
}
}
PHP
函数changeUsername(){
//连接到服务器
$link=//出于安全考虑已注释掉;
if(mysqli\u connect\u error()){
die(“DB连接错误”);
}
$newName=$_POST['newName'];
$newName=mysqli\u real\u escape\u字符串($link,$newName);
$token=$_COOKIE['validToken'];
$token=mysqli\u real\u escape\u字符串($link,$token);
$query=“UPDATE userData SET username='$newName'其中token='$token'限制1”;
mysqli_查询($link,$query);
mysqli_close($link);
回声(“
var username=$newName;
window.localStorage.setItem('username',username);
");
}
如果(isset($_POST['newName'])){
changeUsername();
}
我希望在我的DOM上设置新的用户名,而不是空的。东西停止工作的地方是发送POST数据的地方,因为我的PHP没有接收到任何东西,但我无法找出问题所在。除了发送值,还应该发送参数名 因此,不要使用
sendData.send(newName)代码>,请尝试使用:
sendData.send("newName=" + newName);
(因为您的内容类型是application/x-www-form-urlencoded
)
或者如果要使用JSON:
将内容类型更改为application/json
,然后将数据作为json字符串发送,如下所示:
sendData.send(JSON.stringify({'newName': newName}));
PHP假定发送的参数名为newName
。你在js中的任何地方都指定了这个吗?我可能缺少它,但我看到的是sendData.send(newName)代码>没有参数名。@AnisR。我有一个新名字,但我不认为这就是你的意思。很抱歉,如果我遗漏了一些东西,我对JS的了解比简单多了things@AnisR. 我应该使用对象并将其转换为JSON字符串进行传输吗?我只有一个值可以通过,但这可能是问题吗?请尝试按照我刚刚发布的答案,并让我知道这是否有效。非常感谢!我不确定为什么我没有在那里,我的保存脚本有它,所以是的。再次感谢你!
sendData.send("newName=" + newName);
sendData.send(JSON.stringify({'newName': newName}));