Youtubeの動画にあるMySQLのテーブルからデータをaタグのDownload属性でCSV形式としてダウンロードするというチュートリアルを見ていたのですが、
jquery
1$("#response").html('<a href="'+data+'" download="users.csv">Download here!</a>');
そのコード中の上記の部分においてなぜ+data+という書き方をするのかわかりません。
自分がJavaScript及びjQueryにあまり明るくないためか、コードの処理やdataがjQueryにおいて定義した変数とPHPからレスポンスされてきたデータが接続されたものであるというところはわかるのですが、そこでなぜ「href = "'data'"」ではなく上記のような書き方になるのかが検索しても引っかからずここで質問させていただきました。
以下はコード全文とチュートリアル元の動画リンクです。
PHP部分とHTML及びjQuery部分は分けて書いてありますが、実際は一緒に書いています。
php
1 2<?php 3 $conn = new mysqli("localhost","root","","register"); 4 5if (isset($_POST['start'])) { 6 $start = $conn->real_escape_string($_POST['start']); 7 $allData = ""; 8 $sql = $conn->query("SELECT * FROM users LIMIT $start,50"); 9 while($data = $sql->fetch_assoc()) 10 $allData .= $data['id'] . ',' . $data['name'] . ',' . $data['email'] .','. $data['password'] 11 . ',' . $data['isEmailConfirmed'] . ',' . $data['token'] .','. $data['tokenExpire'] . "\n"; 12 13 exit (json_encode(array("data" => $allData))); 14 15} 16 17$sql = $conn->query("SELECT id FROM users"); 18$numRows = $sql->num_rows; 19 20 ?>
HTML
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Export MySQL Data To CSV</title> 5 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 6 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> 7 </script> 8 <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" type="text/javascript"> 9 </script> 10 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"> 11 </script> 12 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> 13 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"> 14 </script> 15 </head> 16 <body> 17<p id="response">Please Wait......</p> 18 <script type="text/javascript"> 19 let data = "data:text/csv;charset=utf-8,ID,NAME,EMAIL,PASSWORD,isEmailConfirmed,TOKEN,TOKEN EXPIRE\n"; 20 21 $(document).ready(function() { 22 exportToCSV(0,<?php echo $numRows ?>) 23 24 }); 25 26 function exportToCSV(start,max) { 27 if (start > max) { 28 $("#response").html('<a href="'+data+'" download="users.csv">Download here!</a>'); 29 return; 30 } 31 32 33 $.ajax({ 34 url:"index.php", 35 method:"POST", 36 dataType:"json", 37 data: { 38 start:start 39 }}) 40 41 .then( 42 function (response) { 43 data += response.data; 44 exportToCSV((start+50), max); 45 }, 46 function(){ 47 alert("ERROR"); 48 }); 49 } 50 51 </script> 52 </body> 53 </html> 54
回答3件
あなたの回答
tips
プレビュー