数据未通过XMLHttpRequest发送

时间:2019-04-18 15:58:25

标签: javascript

我在使用脚本向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没有拾取任何东西,但是我无法弄清楚出了什么问题。

1 个答案:

答案 0 :(得分:1)

除了发送值之外,还应该发送参数名称

因此,不要使用sendData.send(newName);,请尝试使用:

sendData.send("newName=" + newName);

(因为您的内容类型为application/x-www-form-urlencoded

或者如果您想使用JSON:

将您的内容类型更改为application/json,然后将数据作为JSON字符串发送,如下所示:

sendData.send(JSON.stringify({'newName': newName}));
相关问题