使用Javascript的POST表格

时间:2019-04-06 20:23:58

标签: javascript spring

我正在使用Bootstrap / javascript作为前端开发一个简单的网页,我想做的是发送一个HTTP POST到达后端(我使用Spring作为后端),但收到了400错误请求。< / p>

我有以下脚本和HTML,我正在尝试将表单ID传递给下面的函数以执行HTTP POST。

//标签上的脚本       函数sendData(data){

'hello'

//表单HTML代码

      alert('Data' + data);
      var XHR = new XMLHttpRequest();
      var urlEncodedData = "";
      var urlEncodedDataPairs = [];
      var name;

      // Turn the data object into an array of URL-encoded key/value pairs.
      for(name in data) {
        urlEncodedDataPairs.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]));
      }

      // Combine the pairs into a single string and replace all %-encoded spaces to 
      // the '+' character; matches the behaviour of browser form submissions.
      urlEncodedData = urlEncodedDataPairs.join('&').replace(/%20/g, '+');

      // Define what happens on successful data submission
      XHR.addEventListener('load', function(event) {
        event.preventDefault();
        alert('Yeah! Data sent and response loaded.');
      });

      // Define what happens in case of error
      XHR.addEventListener('error', function(event) {
        alert('Oops! Something goes wrong.');
      });

      // Set up our request
      XHR.open('POST', 'http://localhost:8080/api/novoCondomino');

      // Add the required HTTP header for form data POST requests
      XHR.setRequestHeader('Content-Type', 'application/json');

      // Finally, send our data.
      alert('urlEncodedData' + urlEncodedData);
      XHR.send(urlEncodedData);
    }

    </script>

当我点击按钮提交表格时,我收到400错误的请求错误消息。我知道这是错误的,因为似乎我正在将HTMLDocumentElement作为有效载荷而不是JSON对象发送。我找到了一些没有Javascript的解决方案,但事实证明我的后端不接受application / x-www-form-urlencoded,因此我想将内容类型设置为application / json。将JSON对象作为数据传递时使用POSTMAN时,POST可以正常工作。

如何使用Javascript解决方案修复代码,以完全按照后端的期望从表单发送数据(如下所示的DTO类)

后端期望

// DTO类     公共类UserCommand {

<FORM NAME="myform" id="inputform" onSubmit="JavaScript:sendData(inputform)">
     <div class="form-row">

    <div class="form-group col-md-12">
        <label for="inputAddress">Nome</label>
        <input type="text" class="form-control" id="condomino" placeholder="Nome">
    </div>
  </div>
  <div class="form-group">
    <label for="inputAddress2">Apartamento</label>
    <input type="text" class="form-control" id="apto" placeholder="Apto">

  </div>
  <div class="form-group">
      <label for="inputPassword4">Senha</label>
      <input type="password" class="form-control" id="password" placeholder="Password">
  </div>
  <div class="form-row">
  </div>
  <div class="form-group">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="gridCheck">
      <label class="form-check-label" for="gridCheck">
        Check me out
      </label>
    </div>
  </div>
  <input type="submit" value="Send "class="btn btn-primary">Sign in</button>
</form>

//后端的控制器

    public UserCommand() {

    }

    private int apartament;
    private String name;
    private String password;

谢谢。

1 个答案:

答案 0 :(得分:0)

你说

  

使用POSTMAN时POST工作正常

您是说您正在Postman中使用JSON正文并且它正在运行吗?

如果是这样,解决方案将是确保在调用XHR.send()时使用正确格式的JSON。

记录您传递给XHR.send()的内容,并使用邮递员将其发布,如果您在那里获得400,则可以肯定知道。如果我误解了任何事情,请告诉我。