代码之家  ›  专栏  ›  技术社区  ›  Ricardo Sawir

未处理的拒绝(SyntaxError):输入意外结束[重复]

  •  -1
  • Ricardo Sawir  · 技术社区  · 6 年前

    我正在制作一个组件,是专门为采取电子邮件订户。。。这样地

    import React from "react";
    
    class SubscribeOffer extends React.Component {
    constructor () {
        super();
        this.state={
            email: ""
        }
    }
    
    fillEmailToSubscribe = (event) => {
        this.setState({email: event.target.value});
    }
    
    submitEmailToSubscribe = () => {
        if (this.state.email > 3) {
            fetch('https://(myuser).list-manage.com/subscribe/post?u=(somenumber)&id=(myid)'
            ,{
                mode: 'no-cors',
                method:'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({
                    email:this.state.email
                })
            })
            .then(response => response.json())
            .then(() => {
                alert('Thank you for subscribing!');
            })
        }
    
    }
    
    render () {
        return (
            <div>
                <h1>Get updated upcoming events in your inbox everyday!</h1>
                <p>Would you like us to give you updates with future updates upcoming events?</p>
                <input 
                    type='email'
                    name='email-address'
                    id='email-address'
                    placeholder="your email" 
                    onChange={this.fillEmailToSubscribe}
                    required
                />
                <button onClick={this.submitEmailToSubscribe}>Subscribe</button>
            </div>
        )
    }
    }
    
    export default SubscribeOffer;
    

    Unhandled Rejection (SyntaxError): Unexpected end of input
    

    当我检查API如何响应时,它给了我这样的预览 enter image description here

    你知道我怎么解决这个问题吗? 我让这变得简单,人们输入他们的电子邮件,只需点击按钮,就这样。

    非常感谢你的帮助!

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jeeva    6 年前

    您得到的错误是,它发送空响应(例如,将响应作为空对象{}),因为您正在尝试获取json()。这是因为cors。

    尝试将**“Access Control Allow Origin”:“*”**作为“cors”添加到头和模式中。您需要首先从API获取响应。

        2
  •  0
  •   Hitesh Chaudhari    6 年前

    由于您的电子邮件是在构造函数中定义的字符串,并且您正在将该电子邮件与数字进行比较,这将是您的第一个错误。

    因此,可以使用以下内容更新“submitEmailToSubscribe”函数中的if循环:

    if(this.state.email.trim() !== '') {
      fetch('https://(myuser).list-manage.com/subscribe/post?u=(somenumber)&amp;id=(myid)'
        ,{
            mode: 'no-cors',
            method:'POST',
            headers: {'Content-Type': 'application/json'},
            body: JSON.stringify({
                email:this.state.email
            })
        })
        .then(() => alert('Thank you for subscribing!'));
    }