PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

顯示具有 jQuery 標籤的文章。 顯示所有文章
顯示具有 jQuery 標籤的文章。 顯示所有文章

2014年8月27日 星期三

善用jQuery的load、get、post的方法

概要


過去只能運用互動式網頁技術向伺服器請求資源服務(如ASP,PHP,JSP等)。隨著AJAX技術的興起,讓我們也可以透過以下jQuery函數向伺服器發起服務請求:

  • Load 取回位於伺服器的檔案資源。

  • Get 向伺服器請求數据服務。

  • Post 提交數据給伺服器處理。


在後面的小節裏,會有每一個函數的使用範例與細部的說明,讓大家能夠很快掌握這些函數的使用要領。

使用jQuery Load函數


在Server端創建一支demo_str.txt的文字檔,作為jQuery Load載入的資料來源,其內容如下: 

<h4>這是一個測試文字檔...</h4>


寫一支load.html,在head把jquery.min.js函數庫載入並增加jquery load的腳本實作的程式碼,呼叫且回傳文字檔的內容到id='jqloadDiv'的div標籤。 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>使用jQuery Load函數</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$("#jqloadDiv").load("demo_str.txt");
});
});
</script>
</head>
<body>

<input type="button" id="btn1" name="btn1" value="執行jQuery Load按鈕" />
<div id="jqloadDiv"></div>

</body>
</html>


操作jQuery Get函數


在Server端建立一支obtval_by_get.php,用作jQuery Get函數的呼叫網頁,該頁程式只有包含了一行簡短的文字內容輸出。


<?php
echo "This is testing data. (by Get func)";
?>


撰寫一支get.html,先在head加入jquery.min.js函數庫,再來增加一段jquery get函數實作的腳本程式碼,呼叫並取回echo輸出的文字串流和連線狀態。


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>使用jQuery Get函數</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$.get("obtval_by_get.php",function(data,status){
//alert("資料: " + data + "\n狀態: " + status);
$("#jqDiv").html("資料: " + data + "<br/>狀態: " + status);
});
});
});
</script>
</head>
<body>

<input type="button" id="btn1" name="btn1" value="執行jQuery Get按鈕" />
<div id="jqDiv"></div>

</body>
</html>


運用jQuery Post函數


在Server端建立一支obtval_by_post.php,用來處理由jQuery Post傳遞過來的name和greetings參數,其內容如下:


<?php
if(isset($_POST["name"]) && isset($_POST["greetings"])){
echo $_POST["greetings"].$_POST["name"].". (by Post func)";
}
?>


再寫一支post.html,於head加入jquery.min.js和jquery post函數實作的腳本程式碼,必需附加name與greetings兩個參數值,最後會回傳處理結果和連線狀態。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>使用jQuery Post函數</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$.post("obtval_by_post.php",
{
name:"Peter",
greetings:"Hello, "
},
function(data,status){
//alert("資料: " + data + "\n狀態: " + status);
$("#jqDiv").html("資料: " + data + "<br/>狀態: " + status);
});
});
});
</script>
</head>
<body>

<input type="button" id="btn1" name="btn1" value="執行jQuery Post按鈕" />
<div id="jqDiv"></div>

</body>
</html>


總結


閱讀完以上三個簡單的小範例說明之後,讓我們也可以使用jQuery AJAX的技術向伺服器請求資源服務。由於是經過AJAX回傳的結果,不需要刷新頁面,而且還可以動態改變用戶介面(UI)的顯示效果。

jQuery上傳檔案教學

簡介


記得在前面PHP上傳檔案範例文章中,我們已經了解HTML form的檔案上傳的處理方式。在這篇文章我想要向大家介紹jQuery檔案上傳功能(jQuery Upload),它是一個非常簡單、美觀、容易上手使用的JavaScript的函數庫,可以有效的提升網頁開發設計的速度和效率。

jQuery上傳頁面


首先,在head插入一個css和兩個js檔案,

  • uploadfile.min.css  負責處理用戶端上傳畫面的UI呈現

  • jquery.min.js  它是jQuery核心的函數庫

  • jquery.uploadfile.min.js  負責處理檔案上傳的函數庫

再來於body增加一個id='fileuploader'的div標籤,最後於head加入初始化jQuery插件的腳本代碼<script> $(document).ready(... </script>負責呼叫位於Server端的檔案處理邏輯與將回傳結果顯示在畫面上。

完整的index.html程式碼如下:

<html>
<head>
  <title>jQuery Upload Demo.</title>
  <link href="http://hayageek.github.io/jQuery-Upload-File/uploadfile.min.css" rel="stylesheet">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script src="http://hayageek.github.io/jQuery-Upload-File/jquery.uploadfile.min.js"></script>
  <script>
    $(document).ready(function()
    {
 $("#fileuploader").uploadFile({
 url:"upload.php",
 fileName:"myfile"
 });
    });
  </script>
</head>
<body>

  <div id="fileuploader">Upload</div>

</body>
</html>


檔案處理邏輯


在目前的位置建立uploads目錄,用來存放上傳到伺服器的檔案,接著需要判斷是單一檔案或是多個檔案上傳,分別指派不同的程式邏輯處理。

完整的upload.php程式碼如下:

<?php
$output_dir = "uploads/";
if(isset($_FILES["myfile"]))
{
 $ret = array();
  
 //判斷是單一或多個檔案上傳
 if(!is_array($_FILES["myfile"]["name"])) //單一檔案
 {
    $fileName = $_FILES["myfile"]["name"];
   move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$fileName);
     $ret[]= $fileName;
 }
 else  //多個檔案
 {
   $fileCount = count($_FILES["myfile"]["name"]);
   for($i=0; $i < $fileCount; $i++)
   {
    $fileName = $_FILES["myfile"]["name"][$i];
  move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName);
    $ret[]= $fileName;
   }
 
 }
    echo json_encode($ret);
 }
?>


輸出畫面


jq_upload

結論


由於過去一直都有在使用jQuery Upload來開發上傳檔案的程式,因為它是透過AJAX(Asynchronous JavaScript and XML)的方式來處理上傳檔案的資料串流,所以使用者可以依据其特性客製出各式各樣華麗的jQuery Upload使用者介面(UI;User Interface)。