<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Javascript &amp; Jquery &#8211; 備忘程式碼</title>
	<atom:link href="https://www.weblink.idv.tw/category/javascript_jquery/feed" rel="self" type="application/rss+xml" />
	<link>https://www.weblink.idv.tw</link>
	<description>Javascript, PHP, HTML5 &#38; CSS3 coding memos</description>
	<lastBuildDate>Tue, 26 Mar 2024 03:17:36 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.3</generator>
	<item>
		<title>邏輯判斷式&#038;&#038;與&#124;&#124;在非布林值的判斷邏輯</title>
		<link>https://www.weblink.idv.tw/2020/311</link>
					<comments>https://www.weblink.idv.tw/2020/311#respond</comments>
		
		<dc:creator><![CDATA[Steven LIU]]></dc:creator>
		<pubDate>Fri, 15 May 2020 04:32:42 +0000</pubDate>
				<category><![CDATA[Javascript & Jquery]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">https://www.weblink.idv.tw/?p=311</guid>

					<description><![CDATA[題目完全是故意的，因為要理解邏輯判斷式&#38;&#38;與&#124;&#124;對我來說有點不合邏輯，只好找出自己可以理解的方 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>題目完全是故意的，因為要理解邏輯判斷式<code>&amp;&amp;</code>與<code>||</code>對我來說有點不合邏輯，只好找出自己可以理解的方式去記憶：(布林值判斷很基本就不多說了，直接跳到非布林值判斷的部分)</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">&amp;&amp;：遇到非布林就【繼續走】，到底就丟回該值</h3>



<pre class="wp-block-code"><code>s1 = 'cat' &amp;&amp; 'dog' //dog
s2 = false &amp;&amp; 'dog' //false
s3 = true &amp;&amp; 'dog' //dog
s4 = 'cat' &amp;&amp; false //false
s5 = 'cat' &amp;&amp; true //true</code></pre>



<p><code>s1</code>先遇到&#8217;cat&#8217;，繼續往右走，到底遇到&#8217;dog&#8217;，丟回&#8217;dog&#8217;<br><code>s2</code>先遇到false就直接判斷為false <span class="has-inline-color has-cyan-bluish-gray-color">&lt;= 基本的&amp;&amp;判斷邏輯</span><br><code>s3</code>先遇到true，繼續往右走，到底遇到&#8217;dog&#8217;，丟回&#8217;dog&#8217;<br><code>s4</code>先遇到&#8217;cat&#8217;，繼續往右走，遇到false判斷為false <span class="has-inline-color has-cyan-bluish-gray-color">&lt;= 基本的&amp;&amp;判斷邏輯</span><br><code>s5</code>先遇到&#8217;cat&#8217;，繼續往右走，到底遇到true，丟回true <span class="has-inline-color has-vivid-red-color">&lt;= 反直覺</span></p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">||：遇到非布林就【跳出】，並丟回該值</h3>



<pre class="wp-block-code"><code>s6 = 'cat' || 'dog' //cat
s7 = false || 'dog' //dog
s8 = true || 'dog' //true
s9 = 'cat' || false //cat
s10 = 'cat' || true //cat</code></pre>



<p><code>s6</code>先遇到&#8217;cat&#8217;，跳出並丟回&#8217;cat&#8217;<br><code>s7</code>先遇到false，繼續往右走，遇到&#8217;dog&#8217;為非布林，跳出並丟回&#8217;dog&#8217;<br><code>s8</code>先遇到true就直接判斷為true <span class="has-inline-color has-cyan-bluish-gray-color">&lt;= 基本的||判斷邏輯</span><br><code>s9</code>先遇到&#8217;cat&#8217;，跳出並丟回&#8217;cat&#8217;<br><code>s10</code>先遇到&#8217;cat&#8217;，跳出並丟回&#8217;cat&#8217;  <span class="has-inline-color has-vivid-red-color">&lt;= 反直覺</span></p>



<hr class="wp-block-separator"/>



<p>網路上看到很多人好像都是用口訣背的，但我個人腦筋比較差，沒有理解就完全背不起來，只好自己整理成好理解的方式記憶。以上的方式如果有錯還請留言告知，感謝感謝！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.weblink.idv.tw/2020/311/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>以for遍歷json的超基礎練習</title>
		<link>https://www.weblink.idv.tw/2020/286</link>
					<comments>https://www.weblink.idv.tw/2020/286#respond</comments>
		
		<dc:creator><![CDATA[Steven LIU]]></dc:creator>
		<pubDate>Fri, 10 Apr 2020 02:37:10 +0000</pubDate>
				<category><![CDATA[Javascript & Jquery]]></category>
		<category><![CDATA[javascript]]></category>
		<guid isPermaLink="false">https://www.weblink.idv.tw/?p=286</guid>

					<description><![CDATA[最近重拾coding的起步，是從以往想得不是很清楚的基礎開始砍掉重練。考慮到未來會需要學習NoSQL資料庫，J [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>最近重拾coding的起步，是從以往想得不是很清楚的基礎開始砍掉重練。考慮到未來會需要學習NoSQL資料庫，JSON的熟悉度勢必要提升；以往JSON都是使用在.ajax資料互丟，結構相對簡單、也沒有太多需要處理的地方，因此練習的第一課，就先從以for把所有JSON的資料掃出來開始。</p>



<hr class="wp-block-separator"/>



<h3><strong>基本語法</strong></h3>



<p>for的語法先複習一下：</p>



<pre class="wp-block-code"><code>for (var i = 0; i &lt; 5; i++) { 
    console.log(i)
}
//第一個參數為遍歷起點；第二個參數為終點；第三個參數為每次遍歷的間隔
//i = i+1 a.k.a. i++表示遍歷每一個內容；i = i+2則會遍歷偶數個內容</code></pre>



<p>console印出來為01234，若i = i+2則印出來為024。</p>



<hr class="wp-block-separator"/>



<h3><strong>陣列</strong></h3>



<p>接著複習for一個陣列：</p>



<pre class="wp-block-code"><code>var arrayString = ''
var array = &#91;]
array = &#91;'apple', 'banana', 'citrus', 'dog', 'elephant']
for (i = 0; i &lt; array.length; i++) { //.length取得array的數量
    console.log(array&#91;i]) //單獨印出陣列的每一項內容
    arrayString += array&#91;i] + ' / ' 
    //+=為重複為該變數加入內容
}
console.log(arrayString) //把內容整理成比較容易閱讀的字串</code></pre>



<p>執行結果會是：<br>apple<br>banana<br>citrus<br>dog<br>elephant<br>apple / banana / citrus / dog / elephant /</p>



<hr class="wp-block-separator"/>



<h3><strong>JSON</strong></h3>



<p>最後來練習for一個JSON，首先準備一個JSON物件：</p>



<pre class="wp-block-code"><code>var superHeroes = new Object()
superHeroes = {
    team: 'Avengers',
    members: &#91;{
        name: 'Ironman',
        age: 45,
        skill: &#91;'fly', 'gun', 'genius brain', 'shield']
    }, {
        name: 'Spiderman',
        age: 17,
        skill: &#91;'wallwalk', 'web', 'flexibility']
    }, {
        name: 'Hulk',
        age: 'unknown',
        skill: &#91;'power', 'jump']
    }],
    location: 'Earth'
}</code></pre>



<p>members裡面放了三個超級英雄，各自對應有不同的name、age、skill，其中skill因是複數所以存成array。練習的目的是除了把英雄的資本資料都列出來，還需要再把各自的skill列在該英雄的基本資料裡；如此一來就可以練習兩層的for：第一層把所有的英雄列出來、第二層再於該英雄下把skill印出來：</p>



<pre class="wp-block-code"><code>function printHeroes(jsonObj){ //建立printHeroes的函式
    console.log('We are ' + jsonObj&#91;'team']) //先印出團隊名字
    var user = jsonObj&#91;'members']  
    //取出JSON裡面的members存到變數user
    //此時user是一個array，裡面有三組值
    
    for (i = 0; i &lt; user.length; i++) {  //把user的三組值遍歷出來
        console.log('--We have ' + user&#91;i]&#91;'name'] + ', age: ' + user&#91;i]&#91;'age'] + ', and with skills like: ')
        //先印出每一個英雄的name、age

        var userSkill = user&#91;i]&#91;'skill']
        //再把每個英雄的skill存到變數userSkill
        //此時userSkill是一個array，裡面有2~4個值不等

        //下層for變數不能再重複使用i
        for (j = 0; j &lt; userSkill.length; j++) {  //把userSkill的幾組值遍歷出來
            console.log(userSkill&#91;j])  //印出這些skill內容
        }
    }
    console.log('We protect ' + jsonObj&#91;'location'])  //沒有意義只是好玩
}
printHeroes(superHeroes) //呼叫函式</code></pre>



<p>印出來的結果是：<br></p>



<p>We are Avengers<br>&#8211;We have Ironman, age: 45, and with skills like:<br>fly<br>gun<br>genius brain<br>shield<br>&#8211;We have Spiderman, age: 17, and with skills like:<br>wallwalk<br>web<br>flexibility<br>&#8211;We have Hulk, age: unknown, and with skills like:<br>power<br>jump<br>We protect Earth</p>



<p>如此一來就完成JSON所有資料的遍歷了。超基礎，但還是紀錄一下自己的理解過程。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.weblink.idv.tw/2020/286/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>以縮圖預覽上傳圖片</title>
		<link>https://www.weblink.idv.tw/2017/123</link>
					<comments>https://www.weblink.idv.tw/2017/123#respond</comments>
		
		<dc:creator><![CDATA[Steven LIU]]></dc:creator>
		<pubDate>Tue, 03 Oct 2017 06:26:42 +0000</pubDate>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Javascript & Jquery]]></category>
		<category><![CDATA[FileReader]]></category>
		<category><![CDATA[readAsDataURL]]></category>
		<guid isPermaLink="false">https://www.weblink.idv.tw/?p=123</guid>

					<description><![CDATA[在製作填寫資料的頁面時，常常會需要使用到圖片上傳的功能。預設的情況下，點選圖片後在上傳按鈕的旁邊會顯示圖檔名稱 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>在製作填寫資料的頁面時，常常會需要使用到圖片上傳的功能。預設的情況下，點選圖片後在上傳按鈕的旁邊會顯示圖檔名稱：<br></p>



<span id="more-123"></span>



<figure class="wp-block-image"><img decoding="async" src="https://www.weblink.idv.tw/wp-content/uploads/2017/10/button_before.jpg" alt="上傳前"/></figure>



<p>變成：</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.weblink.idv.tw/wp-content/uploads/2017/10/button_after.jpg" alt="檔案名稱"/></figure>



<p>不過，如果能再增加一個縮圖的話，相信就更能減少傳錯圖檔的風險了。 </p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9940075534877533"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-9940075534877533"
     data-ad-slot="4891658629"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br>



<p>要達到預覽縮圖的功能其實非常簡單，只需幾行的javascript就能快速達成（本例搭配jQuery）：</p>



<h3 class="wp-block-heading">1. 建立一個img作為縮圖的容器，設定好id並以display:none隱藏起來：</h3>



<pre class="wp-block-code"><code>&lt;img id="output" height="200" style="display:none"&gt;</code></pre>



<h3 class="wp-block-heading">2. 建立一個input，設定上傳圖片時執行自訂函數openFile()：</h3>



<pre class="wp-block-code"><code>&lt;input type="file" onchange="openFile(event)"&gt;</code></pre>



<h3 class="wp-block-heading">3. 準備自訂函數openFile()：以javascript讀取檔案、將檔案轉換為base64的字串，再將字串塞在上面img的src裡：</h3>



<pre class="wp-block-code"><code>function openFile(event){
  var input = event.target; //取得上傳檔案
  var reader = new FileReader(); //建立FileReader物件

  reader.readAsDataURL(input.files&#91;0]); //以.readAsDataURL將上傳檔案轉換為base64字串

  reader.onload = function(){ //FileReader取得上傳檔案後執行以下內容
    var dataURL = reader.result; //設定變數dataURL為上傳圖檔的base64字串
    $('#output').attr('src', dataURL).show(); //將img的src設定為dataURL並顯示
  };
}</code></pre>



<h3 class="wp-block-heading">4. 結果如下：<br>
</h3>



<figure class="wp-block-image"><img decoding="async" src="https://www.weblink.idv.tw/wp-content/uploads/2017/10/縮圖.jpg" alt="縮圖結果"/></figure>



<p>Voilà！顯示縮圖就是這麼簡單！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.weblink.idv.tw/2017/123/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ajax搭配PHP、MySQL輸出動態下拉式選單</title>
		<link>https://www.weblink.idv.tw/2017/56</link>
					<comments>https://www.weblink.idv.tw/2017/56#comments</comments>
		
		<dc:creator><![CDATA[Steven LIU]]></dc:creator>
		<pubDate>Sat, 08 Jul 2017 16:10:47 +0000</pubDate>
				<category><![CDATA[Javascript & Jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[動態下拉式選單]]></category>
		<guid isPermaLink="false">https://www.weblink.idv.tw/?p=56</guid>

					<description><![CDATA[動態下拉式選單似乎是詢問度很高的設計需求，jquery甚至還有許多plugin可以選；不過試用過好幾個plug [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>動態下拉式選單似乎是詢問度很高的設計需求，jquery甚至還有許多plugin可以選；不過試用過好幾個plugin都不是很順手，後來想想其實動態下拉式選單並不是多難的東西，於是就花了點時間自己寫，順便也測試自己邏輯夠不夠清楚。</p>



<span id="more-56"></span>



<p>動態下拉式選單的邏輯說穿了很簡單：選定第一層選項後（選項可以用html列或是從資料庫拉），第二層選單會根據第一層選項跳出對應的內容（如果有第三層也是同樣的邏輯，只是資料庫的設計會多一層欄位）。</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9940075534877533"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-9940075534877533"
     data-ad-slot="4891658629"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br>



<p>邏輯了解之後，又要如何用程式表達呢？<br>
1. 假設第一層選單是從資料庫拉，那麼首先就要透過PHP先把第一層選單的項目從資料庫裡撈出來<br>
2. 由jquery取得選取的項目，並用ajax傳到後端負責「打撈」的PHP頁面（假設為deal.php）<br>
3. deal.php取得第一層選項，並把對應的第二層項目撈出來、回傳給ajax<br>
4. 最後，ajax的success:function(res){}再把回傳的第二層項目插入第二層select的option<br>
大功告成！</p>



<p>接下來，在開始準備程式前，首先需要把資料庫準備好。舉例來說，我希望第一層是產品的分類項目，第二層是分類項目下的產品型號，那麼在資料庫就需要先建「分類」與「型號」的欄位，簡單規劃如下：</p>



<figure class="wp-block-table"><table><tbody><tr><th>categories</th><th>items</th></tr><tr><td>TV</td><td>46&#8243;</td></tr><tr><td>TV</td><td>50&#8243;</td></tr><tr><td>Player</td><td>BD</td></tr><tr><td>Player</td><td>DVD</td></tr><tr><td>Player</td><td>VCD</td></tr></tbody></table></figure>



<p>資料庫建好之後，就可以開始著手頁面了：</p>



<p><b>1. 建置html選單：</b></p>



<pre class="wp-block-code"><code>&lt;div&gt;
   &lt;select id='categories'&gt;
      &lt;option&gt;選擇系列&lt;/option&gt;
   &lt;/select&gt;
&lt;/div&gt;
&lt;div&gt;
   &lt;select id='items'&gt;
      &lt;option&gt;選擇產品&lt;/option&gt;
   &lt;/select&gt;
&lt;/div&gt;</code></pre>



<p><b>2. 插入PHP語法把categories的項目從資料庫裡撈出來：</b></p>



<pre class="wp-block-code"><code>&lt;div&gt;
   &lt;select id='categories'&gt;
      &lt;option&gt;選擇系列&lt;/option&gt;
&lt;?
$sql = "SELECT DISTINCT categories FROM 表格名稱";//DISTINCT可選出欄位中具有不同名稱的資料，本例中會挑出TV與Player
$result = mysqli_query($link, $sql) or die("資料選取錯誤！".mysqli_error($link));
while($data=mysqli_fetch_assoc($result)){
?&gt;
      &lt;option value="&lt;?echo $data&#91;'categories'];?&gt;"&gt;&lt;?echo $data&#91;'categories'];?&gt;&lt;/option&gt;
&lt;?
}
?&gt;
   &lt;/select&gt;
&lt;/div&gt;
&lt;div&gt;
   &lt;select id='items'&gt;
      &lt;option&gt;選擇產品&lt;/option&gt;
   &lt;/select&gt;
&lt;/div&gt;</code></pre>



<p><b>3. 抓取被選取的選項，透過ajax丟到後端deal.php：</b></p>



<pre class="wp-block-code"><code>$(document).on('change', '#categories', function(){
   var categories = $('#categories :selected').val();//注意:selected前面有個空格！
   $.ajax({
      url:"deal.php",				
      method:"POST",
      data:{
         categories:categories
      },					
      success:function(res){					
         //處理回吐的資料
      }
   })//end ajax
});</code></pre>



<p><b>4. deal.php取得分類選項，從資料庫裡撈對應的型號出來：</b></p>



<pre class="wp-block-code"><code>$categories = $_POST&#91;'categories'];
$sql = "SELECT items FROM 資料表名稱 WHERE categories = '$categories'";
$result = mysqli_query($link, $sql) or die("取出資料失敗！".mysqli_error($link));
$res = "";//把準備回傳的變數res準備好
while($data=mysqli_fetch_assoc($result)){
   $res .= "
      &lt;option value='{$data&#91;"items"]}'&gt;{$data&#91;'items']}&lt;/option&gt;
   ";//將對應的型號項目遞迴列出
};
echo $res;//將型號項目丟回給ajax</code></pre>



<p><b>5. 最後一個步驟，將deal.php吐回的項目列表塞回DOM的select裡面：</b></p>



<pre class="wp-block-code"><code>$(document).on('change', '#categories', function(){
   var categories = $('#categories :selected').val();
   $.ajax({
      url:"deal.php",				
      method:"POST",
      data:{
         categories:categories
      },					
      success:function(res){					
         $('#items').html(res);
      }
   })//end ajax
});</code></pre>



<p>結束收工！</p>



<p>實際跑過整個流程之後，是不是發現動態下拉式選單真的不複雜，只是若要到三層、四層……，資料庫的設計就要更多欄位而已，說不定反倒是把所有資料輸入資料庫欄位還比較花時間咧！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.weblink.idv.tw/2017/56/feed</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>ajax搭配PHP將文字資料存入資料庫</title>
		<link>https://www.weblink.idv.tw/2017/40</link>
					<comments>https://www.weblink.idv.tw/2017/40#respond</comments>
		
		<dc:creator><![CDATA[Steven LIU]]></dc:creator>
		<pubDate>Sat, 08 Jul 2017 06:13:58 +0000</pubDate>
				<category><![CDATA[Javascript & Jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>
		<guid isPermaLink="false">https://www.weblink.idv.tw/?p=40</guid>

					<description><![CDATA[在沒有使用ajax將資料從前端往後端傳輸之前，一般的作法都是用HTML的form把表單包起來，然後在actio [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>在沒有使用ajax將資料從前端往後端傳輸之前，一般的作法都是用HTML的form把表單包起來，然後在action與method的地方設定傳輸參數丟給後端處理，像是：<br>
</p>



<span id="more-40"></span>



<pre class="wp-block-code"><code>&lt;form action='res.php' method='post'&gt;
   &lt;input name='name' type='text'&gt;
   &lt;input name='submit' type='submit'&gt;
&lt;/form&gt;</code></pre>



<p>這樣後端的res.php頁面就可以透過POST取得name的值作處理（通常是INSERT INTO資料庫）：</p>



<pre class="wp-block-code"><code>&lt;?
require_once('connect.php');//引入資料庫連結設定檔
$name = $_POST&#91;'name'];//取得name值
$sql = "INSERT INTO 表格名稱 (欄位名稱) VALUES ('$name') ";//插入表格語法
mysqli_query($link, $sql) or die("錯誤訊息：".mysqli_error($link));//執行插入
echo "資料插入成功！";//顯示訊息
?&gt;
//這段程式沒有做任何處理，建議實際使用時對變數作if判斷來決定成功與失敗的回傳訊息</code></pre>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9940075534877533"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-9940075534877533"
     data-ad-slot="4891658629"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br>



<p>但因為這樣會將整頁html都傳出去，而這些資料大部分都是重複沒有必要的，所以後來才開始發展出ajax這種方式，僅把需要的資料丟到後端，不必整頁html都傳。如此一來不僅降低傳輸量，透過jquery的DOM操作，我們還能跳過html的form與input限制，直接把任何我們想傳的值透過抓取DOM元素丟到後端，並且把後端丟回來的東西再透過DOM作更多元的處理。</p>



<p>舉例來說，html碼我們可以用最習慣的div去包裹表單內容：</p>



<pre class="wp-block-code"><code>&lt;div id='input'&gt;
   &lt;input type='text' id='name'&gt;
   &lt;button id='submit'&gt;送出&lt;/button&gt;
&lt;/div&gt;
&lt;div id='response' style='display:none;'&gt;
&lt;/div&gt;</code></pre>



<p>然後javascript就變成：</p>



<pre class="wp-block-code"><code>$(document).on('click', '#submit', function(){ 
/*使用$(document).on()的原因是如果id為submit的按鈕是一開始沒有載入、透過ajax互動後才產生的DOM，那用$().click會抓不到，需以$(document).on()才行 */
   var name = $('#name').val();
   $.ajax({
      url:'res.php',
      method:'POST',
      data:{
         name:name
      },
      success:function(res){
         $('#input').hide();
         $('#response').show().html(res);
      }
   })
}</code></pre>



<p>後端php保持原來的樣子：</p>



<pre class="wp-block-code"><code>&lt;?
require_once('connect.php');//引入資料庫連結設定檔
$name = $_POST&#91;'name'];//取得name值
$sql = "INSERT INTO 表格名稱 (欄位名稱) VALUES ('$name') ";//插入表格語法
mysqli_query($link, $sql) or die("錯誤訊息：".mysqli_error($link));//執行插入
echo "資料插入成功！";//顯示訊息
?&gt;</code></pre>



<p>若ajax傳輸成功，res.php就會吐回</p>



<pre class="wp-block-code"><code>echo "資料插入成功！";</code></pre>



<p>echo的內容會成為success:function(res){}的res，於是我們就能利用這個res變數在現有的DOM上面任意處理啦！以例子來說，就是把id為response的div從隱藏改為顯示，並將res的內容印上去：</p>



<pre class="wp-block-code"><code>$('#response').show().html(res);</code></pre>



<p>如何？用ajax傳值是不是非常簡單？</p>



<p>透過res.php裡面的echo，我們可以決定任何想回傳給前端的callback（例如從資料庫裡撈東西出來作判斷後回吐，許多即時驗證用戶名是否重複的ajax功能即是這種應用），然後前端再於success:function(res){}裡面對回傳的res作處理。只要理解ajax與後端的溝通流程，光是簡單的前後端互動就能創造很多漂亮又即時的網頁效果囉！至於圖片與多個重複欄位的表單要如何以ajax處理，就留給下一篇介紹吧！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.weblink.idv.tw/2017/40/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
