2016-12-05 5 views
2

私はwebapiを私のデータとそのデータを返すことがありますが、私はtxtファイルでダウンロードする必要があります。 私は以下のコードを使用してこれを行いました。私は望む結果を得ています。私は何とかより良いアプローチを探しています。これを行うための角度のある方法はありますか?Angularjsを使用してjsonをダウンロード

$scope.downloadResponseAsInfoFile = function (response) { 
    var link = document.createElement("a"); 
    link.download = "info.txt"; 
    var data = "text/json;charset=utf-8," + encodeURIComponent(response); 
    link.href = "data:" + data; 
    link.click(); 
}; 

サーバーからの応答を取得しない場合の対処方法

+0

あなたの機能は何と呼びますか? '応答'はどこから来たのですか?おそらくあなたがそこにHTTPエラーを処理するだろう – Phil

+0

あなたの応答に基づいて条件が書ける場合 – Sujithrao

+0

@Philそのようなvar応答= myService.downloaInfo(id、name); $ http.get(URL) - :クローム – pankaj

答えて

4

downloadResponseAsInfoFileでは、httpコールで応答が来ている場合は、responseに従って例外を処理する必要があります。

$scope.downloadResponseAsInfoFile = function (response) { 
    // if this response is coming through http call than make condition according to http response.statusCode 
    //check response is undefined, null or empty 
    if(typeof response == 'undefined' || response == null || response == "") 
     return ; 

    var link = document.createElement("a"); 
    link.download = "info.txt"; 
    var data = "text/json;charset=utf-8," + encodeURIComponent(response); 
    link.href = "data:" + data; 
    link.click(); 
}; 

角度ウェイ:article

+0

(!応答= NULL &&レスポンス= ""){ $ scope.downloadResponseAsInfoFile(レスポンス)}であれば動作します。関数successCallback(レスポンス){ //コード }、関数errorCallback(レスポンス){ // errmsg }); –

0

あなたがここにWeb APIを 参照ドキュメントからデータをフェッチするための角度$ HTTPプロバイダを使用することができます - https://docs.angularjs.org/api/ng/service/ $ HTTP

$http.get(url).then(function (response) { 
var link = document.createElement("a"); 
link.download = "info.txt"; 
var data = "text/json;charset=utf-8," + encodeURIComponent(response); 
link.href = "data:" + data; 
link.click(); 
}; 
+0

上記のコードにわずかに加えて、魔法のように – Vibhu

+0

一般的には、コードが意図していることの説明が含まれていて、他の人を紹介せずに問題を解決する理由があれば、回答がはるかに役立つ –

+0

@Oderaはチップをありがとう、 。 – Vibhu

0

あなたはネイティブ使用して試みることができますJavaScript API - BlobおよびFileSaver.js saveAs HTML要素をまったく処理する必要はありません。

var data = { 
    key: 'value' 
}; 
var fileName = 'myData.json'; 

// Create a blob of the data 
var fileToSave = new Blob([JSON.stringify(data)], { 
    type: 'application/json', 
    name: fileName 
}); 

// Save the file 
saveAs(fileToSave, fileName); 

コントローラのコールバックに上記のコードを貼り付けてください。

関連する問題