jquery帖子在帖子

时间:2018-04-01 19:21:51

标签: javascript jquery ajax post

我已经阅读了一些类似的问题,但似乎没有人特别询问过这个问题。我发送一个我知道具有我想要的属性的JSON对象,但是其中一个在$.post()请求的身体中消失了。我有以下表单,我知道DOM ID是正确的,并且他们的.val()是存在的,因为我在将json对象作为参数发送到authenticate(user)之前对其进行控制记录:

以下是完整性示例:

const authenticate = (user) => {
 console.log(user);
  $.post("http://localhost:8080/auth",user)
  .done(
    (data,status,xhr) => {
        console.log(data.user+"---user---");
      }
    ).fail(xhr => console.log(JSON.parse(xhr.responseText).message));
  }
}

$('#login_form').on('submit', event => {
  event.preventDefault();
  console.log({email:$('#username').val(),password:$('#password').val()});
  authenticate({email:'user@email.com',password:$('#password').val()});
});
<form id="login_form" onsubmit="false">
                        <label for="username">Email</label>
                        <input id="username" name="username" placeholder="jimmy@john.com" type="email" class="form-control" required autofocus>                        

                        <label for="password">Password</label>
                        <input id="password" name="password" placeholder="Password" type="password" class="form-control" required>                         
                        <button type="submit" class="btn btn-primary btn-lg btn-block" style="margin-top:10px">Log in</button>





<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

{email:$('#username').val(),password:$('password').val()}

但我尝试用真实用户的字符串值替换它们,我可以看到控制台日志中有.val()个。我在beowser的开发工具中看到的是帖子请求将其作为正文发送:

{email:"",password:"password"}

它确实传递了正确的对象,但电子邮件字段为空或空字符串。我已经尝试将对象字符串化并将其作为模板文字发送,我尝试将$.post()数据类型设置为JSON,但似乎没有任何东西可以解析电子邮件,所以我从服务器的验证器获得了400缺少证书。我已经用尽了我所知道的每条路径,并没有在Google上找到有这个问题的人。请一试,谢谢!

2 个答案:

答案 0 :(得分:0)

这是工作示例,似乎你使用的是const&amp;的同名功能

$('#login_form').on('submit', event => {
  event.preventDefault();
  
  authenticate({
    email: $('#username').val(),
    password: $('#password').val()
  });
});

function authenticate(user){
    console.log(user);
    $.post("http://localhost:8080/auth", user)
      .done(
        (data, status, xhr) => {
          console.log(data.user + "---user---");
        }
      ).fail(xhr => console.log(JSON.parse(xhr.responseText).message));
  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="login_form" onsubmit="false">
  <label for="username">Email</label>
  <input id="username" name="username" placeholder="jimmy@john.com" type="email" class="form-control" required autofocus>

  <label for="password">Password</label>
  <input id="password" name="password" placeholder="Password" type="password" class="form-control" required>
  <button type="submit" class="btn btn-primary btn-lg btn-block" style="margin-top:10px">Log in</button>

</form>

答案 1 :(得分:0)

谢谢大家,我很快就会把它拉下来,因为它只是其中一个&#34;我是一个白痴&#34;的东西。我有另一个事件监听器,我忘了删除导致问题。我知道有些事情发生了,因为当我发布我的jsFiddle smippet时,它起作用了......所以我在es6函数定义中使用const没有任何问题。正确的倾听者是我发布的那个:

$('#login_form').on('submit', event => {
  event.preventDefault();
  console.log({email:$('#username').val(),password:$('#password').val()});
  authenticate({email:$('#username').val(),password:$('#password').val()});
});

但还有另一个错误的DOM ID $('#email).val()

$('#login_form').on('submit', event => {
  event.preventDefault();
  console.log({email:$('#email').val(),password:$('#password').val()});
  authenticate({email:$('#email').val()',password:$('#password').val()});
});
不要像我一样愚蠢,在你问之前阅读......