Javascript 马尔科JS提交
我无法让它工作,它将不会Javascript 马尔科JS提交,javascript,node.js,marko,Javascript,Node.js,Marko,我无法让它工作,它将不会console.log(this.stat.first_name),我需要知道如何访问输入的表单值,以便我可以更改状态,然后在postSubmit函数中发出axiospost请求。我正在首先执行console.log来测试它并正确地移动数据 什么都可以 第一个问题被删除了,这是一个转载,因为我没有弄清楚问题所在 class { onCreate() { this.state = { first_name: null, last_name
console.log(this.stat.first_name)
,我需要知道如何访问输入的表单值,以便我可以更改状态,然后在postSubmit
函数中发出axios
post请求。我正在首先执行console.log
来测试它并正确地移动数据
什么都可以
第一个问题被删除了,这是一个转载,因为我没有弄清楚问题所在
class {
onCreate() {
this.state = {
first_name: null,
last_name: null,
email: null,
address: null,
phone_number: null,
email_promotion_optin: false
};
}
postSubmit(event) {
event.preventDefault();
this.state.first_name = event.target.name.first_name;
console.log(this.state.first_name);
}
}
<form on-click('postSubmit')>
<fieldset>
<legend> Create Customer</legend>
<div>
<label>
First Name: <input type="text" name="first_name">
</label>
</div>
<div>
<label>
Last Name: <input type="text" name="last_name">
</label>
</div>
<div>
<label>
Email: <input type="text" name="email">
</label>
</div>
<div>
<label>
Address: <input type="text" name="address">
</label>
</div>
<div>
<label>
Phone Number: <input type="text" name="phone_number">
</label>
</div>
<div>
<label>
Submit <input type="submit">
</label>
</div>
</fieldset>
</form>
类{
onCreate(){
此.state={
名字:空,
姓氏:空,
电子邮件:空,
地址:空,
电话号码:空,
电子邮件\u促销\u选项:false
};
}
后期提交(活动){
event.preventDefault();
this.state.first\u name=event.target.name.first\u name;
console.log(this.state.first_name);
}
}
创建客户
名字:
姓氏:
电邮:
地址:
电话号码:
提交
更新!!!!!!!:
我从MarkoJS文档中找到了这个,但仍然没有运气。我可能走对了路,或者我可能用很多不必要的废话污染了我的代码
$ const axios = require('axios');
class {
onCreate() {
this.state = {
first_name: '',
last_name: '',
email: '',
address: '',
phone_number: '',
email_promotion_optin: false
};
}
onFirstNameInput () {
this.state.first_name = this.getEl('firstName').value;
}
onLastNameInput () {
this.state.last_name = this.getEl('lastName').value;
}
onEmailInput () {
this.state.email = this.getEl('email').value;
}
onAddressInput () {
this.state.address = this.getEl('address').value;
}
onPhoneNumberInput () {
this.state.phone_number = this.getEl('phoneNumber').value;
}
postSubmit() {
axios.post('/api/v1/customers', this.state)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
}
<form>
<fieldset>
<legend> Create Customer</legend>
<div>
<label>
First Name: <input type="text" key="firstName" on-input('onFirstNameInput')>
</label>
</div>
<div>
<label>
Last Name: <input type="text" key="last_name" on-input('oneLastNameInput')>
</label>
</div>
<div>
<label>
Email: <input type="text" key="email" on-input('onEmailInput')>
</label>
</div>
<div>
<label>
Address: <input type="text" key="address" on-input('onAddressInput')>
</label>
</div>
<div>
<label>
Phone Number: <input type="text" key="phone_number" on-input('onPhoneNumberInput')>
</label>
</div>
</fieldset>
<div>
<button on-click('postSubmit')>Submit</button>
</div>
</form>
$const axios=require('axios');
阶级{
onCreate(){
此.state={
名字:'',
姓氏:“”,
电子邮件:“”,
地址:'',
电话号码:'',
电子邮件\u促销\u选项:false
};
}
onFirstNameInput(){
this.state.first_name=this.getEl('firstName').value;
}
onLastNameInput(){
this.state.last_name=this.getEl('lastName').value;
}
onEmailInput(){
this.state.email=this.getEl('email').value;
}
onAddressInput(){
this.state.address=this.getEl('address').value;
}
onPhoneNumberInput(){
this.state.phone_number=this.getEl('phoneNumber')。值;
}
postSubmit(){
axios.post('/api/v1/customers',this.state)
.然后(功能(响应){
控制台日志(响应);
})
.catch(函数(错误){
console.log(错误);
});
}
}
创建客户
名字:
姓氏:
电邮:
地址:
电话号码:
提交
我调查了这个问题。代码未按预期工作的原因是this.state
对象上的属性未定义为可枚举
。MarkoJS使用Object.defineProperty
为状态属性创建getter和setter,但它没有显式地将可枚举属性设置为true
,因此默认为false
。我认为我们应该解决这个问题,并提出一个GitHub问题进行讨论:
同时,我建议使用以下变通方法显式复制应随HTTP post一起提交的属性:
postSubmit() {
var request = {
first_name: this.state.first_name,
last_name: this.state.last_name,
email: this.state.email,
address: this.state.address,
phone_number: this.state.phone_number,
email_promotion_optin: this.state.email_promotion_optin
}
axios.post('/api/v1/customers', request)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
您可以尝试使用按钮作为Submit
并在那里调用您的postSubmit
函数。您是否愿意帮助我将其安装到console。记录数据?不确定它是否有效,但使用类似Submit
的方法,我仍然会出现空白,这让人沮丧。我相信问题在于postSubmit()
函数本身的定义。我不确定我试图从事件
对象获取数据的方式是否正确。它甚至可能不是我需要使用的event
,但我在任何地方都找不到使用marko(即marko、表单和文本输入字段)的任何实际示例。我们将拭目以待,看看社区会有什么样的结果,而我会在这几天里胡闹。这太脆弱了,我不敢相信这是一个公认的答案。