weixin_33713707 2017-01-20 10:54 采纳率: 0%
浏览 318


I want to post data in the POST request. I have a login form which looks like this

        return (
            <div className="LoginPage">
                <div className="login-page">
                    <div className="form">
                        <form className="login-form">
                            <input id="username" type="username" placeholder="username"/>
                            <input id="password" type="password" placeholder="password"/>
                            <p className="message">Not registered? <a href="#">Request Username and Password</a></p>
                        <button onClick={this.handleLoginButtonClick.bind(this)}>login</button>

I am making a POST request in handleLoginButtonClick

handleLoginButtonClick() {
        let token;
        var settings = {
            "async": true,
            "crossDomain": true,
            "url": "https://trigger-backend.appspot.com/auth/login/",
            "method": "POST",
            "credentials": 'include',
            "headers": {
                "content-type": "application/x-www-form-urlencoded",
            "data": {
                "password": JSON.stringify(document.getElementById("password").value),
                "username": JSON.stringify(document.getElementById("username").value)
            success: function( data, textStatus, jQxhr ){
               // alert("success");

        $.ajax(settings).done((response) => {

            token = JSON.stringify(response.auth_token)

So I am currently including the data like this

 "data": {
                "password": JSON.stringify(document.getElementById("password").value),
                "username": JSON.stringify(document.getElementById("username").value)

But api gives me a 400 error like this

enter image description here

But at the same time if I pass the data like this then it works

"data": {
                "password": "apurv",
                "username": "Apurv"

what is the problem here. Both should be same, right?

  • 写回答

2条回答 默认 最新

  • weixin_33743248 2017-01-20 10:57

    You should remove the JSON.stringify calls here as they are adding unnecessary double quotes around the values making them invalid:

    "data": {
        "password": document.getElementById("password").value,
        "username": document.getElementById("username").value

    So instead of sending the value apurv as password you are sending "apurv" which is not the correct password.

  • weixin_33691817 2017-01-20 11:08

    the return value of "getElementById().value" is string, but "JSON.stringify()" is for converting object into string. that means you are trying to convert string to string. that's why the error occurred.




  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗
  • ¥15 设计一个成绩管理系统
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法