2017-04-16 4 views
0

AJAXリクエスト(フォームから取得)で指定されたアカウントに電子メールを送信するCGI pythonスクリプトがあります。AJAXリンクcgi pythonスクリプトが完了しましたが、まだエラーが返されています

<script type = "text/javascript"> 
$(function() 
{ 
$('#regbut').click(function(){ 
    alert('Im going to start processing'); 
    $.ajax({ 
      url: "/cgi-bin/register.py", 
      type: "post", 
      data: $("#frm").serialize(),     
      success: function(data){     
       alert("Well done boyo"); 
      }, 
      error: function (response) { 
       console.log(response); 
      }   
    }); 
}); 
}); 
</script> 

このスクリプトは、実際に動作しますから受信

def getEmail(): 
    parameter = cgi.FieldStorage() 
    a = parameter.getvalue('email') 
    sent_from = gmail_user 
    SUBJECT = "Thanks" 
    TEXT = "Hey" 
    message = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT) 
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465) 
    server.ehlo() 
    server.login(gmail_user, gmail_password) 
    server.sendmail(sent_from, a, message) 
    server.close() 

if __name__ == "__main__": 
    getEmail() 

。入力した場所に電子メールを送信します。しかし、AJAXはこれを決して受け入れることはできません。アラートは決して消えません。実際には、私はエラーエリアにアラートを入力し、代わりに起動しました。 Console.log(応答)は、このエラーを生成します。

Object { readyState: 0, getResponseHeader: .ajax/y.getResponseHeader(), getAllResponseHeaders: .ajax/y.getAllResponseHeaders(), setRequestHeader: .ajax/y.setRequestHeader(), overrideMimeType: .ajax/y.overrideMimeType(), statusCode: .ajax/y.statusCode(), abort: .ajax/y.abort(), state: .Deferred/e.state(), always: .Deferred/e.always(), catch: .Deferred/e.catch(), 8 more… } 

しかし、私はこれが何を意味するのか分かりませんでした。どんな助けでも大歓迎です。

(それが重要場合、これはすべて、ローカルホストを通じてApacheサーバ上で実行されている)

答えて

0

問題は非同期に設定してやることだったようです。非同期を設定しないと、プログラムがすぐにエラーになることを意味します。スクリプトの実行が完了するのを待っていないためです。偽が廃止されましたが、今のところ、私はこれを固定する別の方法を見ることができない。

$(function() 
{ 
$('#regbut').click(function(){ 
    alert('Im going to start processing'); 
    $.ajax({ 
      url: "/cgi-bin/register.py", 
      type: "post", 
      data: $("#frm").serialize(), 
      async: false,    
      success: function(data){     
       alert("Well done boyo"); 
      }, 
      error: function (response) { 
       console.log(response); 
      }   
    }); 
}); 
}); 

はしかし、これはその非同期で、別の問題が発生しますので、async: false修正問題を追加。

関連する問題