我已经阅读了一些类似的问题,但似乎没有人特别询问过这个问题。我发送一个我知道具有我想要的属性的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上找到有这个问题的人。请一试,谢谢!
答案 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()});
});
不要像我一样愚蠢,在你问之前阅读......