2016-03-19 6 views
2

ここでは、フォームが送信されたときにメールを送信します。すべてがうまくいきます、インターネット接続が存在しないにもかかわらず唯一の問題は、ユーザーが成功を得ているということです。インターネットに接続していないとエラーメッセージが表示されます。インターネット接続がない場合、トーストを表示したいのですが、どうすればいいのかわかりません。

スクリプト

this.mail= function() { 
var data = ({ 
    name :this.name, 
    email :this.email 

}) 

//Post Request 
$http.post('/send', data). 
    success(function(response, status, headers, config){ 
      $mdToast.show(

       $mdToast.simple() 
        .textContent('Your form has been submitted '+data.name) 
        .position($scope.getToastPosition()) 
        .hideDelay(5000) 
      ); 
    }). 

    error(function(response, status, headers, config) { 
     $mdToast.show(
     $mdToast.simple() 
      .textContent('Something went wrong, Please TRY AGAIN '+data.name) 
      .position($scope.getToastPosition()) 
      .hideDelay(5000) 
     ); 

}); 

サーバー

function send(req, res) { 
    console.log(req.body); 

    var data= req.body 
    smtpTransport.sendMail({ 
    from: "<[email protected]>", 
    to: data.email, 
    subject: "Website Submission from "+data.name, 
    text: 'You have a new submission with the following details..., 
    }, function(error, response){ //callback 
    if(error){ 
     console.log(error); 
    }if(error.code == "ENOENT"){ 
     console.log("no internet connection"); 
    }else{ 
     console.log(" Message sent "+data.name); 
    } 

    smtpTransport.close(); 
    }); 
    res.json(data); 
} 

答えて

1

https://docs.angularjs.org/api/ng/service/$http $はhttpレガシー約束方法の成功とエラーが廃止されました。代わりにstandard thenメソッドを使用してください。 $ httpProvider.useLegacyPromiseExtensionsがfalseに設定されている場合、これらのメソッドは$ http/legacyエラーをスローします。

成功/エラーを使用しないでください。

+0

javascriptのコードを使用することができます私は2つの間に大きな大きな違いを見つけることができません、私はこれをしようとするとバックのuに取得:) – Ankit

+0

をあなたの先生に感謝、私は間違っているかもしれないが、どのようなIレスポンスオブジェクトには、従来のものと同じように見えるデータ、ステータス、ヘッダ、設定プロパティが含まれていることをここで確認してください。とにかくそのおかげで、私は新しいものに自分のコードを変更しました:) – Ankit

+0

ここでフォームが正常に投稿されているので、私は乾杯しています。しかし、実際のエラーは、ノードメーラからです。これは私が画面に表示したいものです。 – Ankit

0

あなたは

if(!window.navigator.onLine) 
{ 
//you are not online 
} 
+0

それは大丈夫ですが、私は応答からエラーを取得し、それを のように画面に表示したいのですが、このerror.code == "ENOENT" – Ankit

関連する問題