我正在用表格练习ajax,并且......我想为了学习而越来越多地迷惑自己。
这可能没有任何意义,但我试图记录名字和姓氏,特别是通过conLog函数。但它显示为未定义,因为我认为上下文"这"不存在,我不确定如何设置它。我设法将它设置在ajax中。
因此,如果您打开日志,第二行显示未定义,而在第一行中,将记录第一个表单的输入。
https://jsfiddle.net/2oLjqv7c/3/
假设存在问题,我该如何通过"这个"进入conLog?
提前谢谢!我发现了一些同样问题的帖子,但感叹......我想我无法掌握它,除非它适用于我的个人问题(仍然需要学会阅读其他人的问题)。 s码我猜)。HTML
<form action="/echo/html/" id="form1" method="post">
First Name:
<input type="text" value="first" id="firstName">
<br/>
Last Name:
<input type="text" value="last" id="lastName">
<br/>
<button type="submit" form="form1" value="submit">Submit</button>
</form>
使用Javascript / jQuery的
function Display(el) {
this.el = el;
this.firstName = this.el.find("#firstName");
this.lastName = this.el.find("#lastName");
var confirmation = this;
this.el.on('submit', function(e) {
e.preventDefault();
$.ajax('/echo/html/', {
success: function() {
console.log('success' + " " + this.firstName.val());
this.conLog(this.firstName.val(), this.lastName.val());
},
error: function() {
console.log('fail');
},
timeout: 3000,
context: confirmation
});
});
this.conLog = function(first, last) {
this.first = this.first;
this.last = this.last;
console.log(this.first + " " + this.last);
};
}
$(document).ready(function() {
Display($('#form1'));
})
答案 0 :(得分:1)
我想这就是你要找的东西。
我修改了您的fiddle以将名称输出到<p>
元素。
我刚刚修改了consLog
的道具的分配方式:
this.conLog = function(first, last) {
this.first = first;
this.last = last;
console.log(this.first + " " + this.last);
document.getElementById("name").innerHTML = this.first + " " + this.last;
};
答案 1 :(得分:1)
您无需通过this
。因为您已经传递了first
和last
参数。只需直接使用这些:
this.conLog = function(first, last) {
console.log(first + " " + last);
};
注意我将this.first
和this.last
更改为first
和last
。
答案 2 :(得分:1)
所以有很多方法可以实现这一目标......最简单的方法之一是将var self = this;
设置在this.el = el;
的上方或周围,无论你的功能有多深,通过利用Javascript的功能范围,始终使用此引用。如果你说你正在学习我建议你调查Function.bind Function.call and Function.apply
这与你的问题有关...... MDN总是一个很好的起点..