2020年8月31日 星期一

ajax 使用form格式post 資料

Html部分:
	

  <form id="myForm" action="getPost.php" class='col-12 col-md-5 mx-auto'>
    <div class="form-group">
      <label for="data1">Email:</label>
      <input type="email" class="form-control" id="data1" name="data1" aria-describedby="emailHelp" autocomplete required>
      <small id="emailHelp" class="form-text text-muted">請輸入E-mail</small>
    </div>
    <div class="form-group">
      <label for="data2">Password</label>
      <input type="password" class="form-control" id="data2" name="data2" autocomplete required>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>



Jquery 部分:

$(function(){

      $( "#myForm" ).on( "submit", function(event) {

        event.preventDefault();        
        var form = $(this);
        var url = form.attr('action');

        $.ajax({
          type: "POST",
          url: url,
          data: form.serialize(), // 把form內的物件序列化.
          success: function(data)
          {
            //alert(data);

            if(data==1){
              alert('成功');
              //window.location.href='index.php';
            }else if(data == 0){
              alert('失敗');
              return false; 
            };

          }
        });       
      });

})

接收的PHP這一端,就直接以$_POST[""]接收傳過來的各個值

相關:不使用form的方式,直接用id或class讀取input的vlaue值post

2020年8月19日 星期三

希望網頁頁面限制在一個瀏覽器內只能在一個分頁中被開啟時 Storage Event 在safari上的Bug

在實作希望網頁頁面限制在一個瀏覽器內只能在一個分頁中被開啟時使用了以下的方法(參考自此
		
// Broadcast that you're opening a page.
  localStorage.openpages = Date.now();
  var onLocalStorageEvent = function(e){
  
      if(e.key == "openpages"){
          // Listen if anybody else is opening the same page!
          localStorage.page_available = Date.now();
      }

      if(e.key == "page_available"){
          alert("您已在其他分頁開啟過此頁面");
          return false;
      }

  };
  
  window.addEventListener('storage', onLocalStorageEvent, false);

以上的方法在chrome、firefox等瀏覽器上皆可正常運作,但是在safari上會有問題,警告會在第一個分頁就跳出
目前有被回報為safari的bug -> Storage events are fired for the same tab 

暫時可解的方法是在function內加上!document.hasFocus(),如下 (參考自此

上述解法還是有問題,目前尚未找到有效解決方式

2020年5月26日 星期二

【Linux】如何停止正在運行的crontab排程工作 to see and stop current running crontab tasks.

當 crontab排程已開始執行時,可透過以下方式找出執行緒並將運行中的排程停止

經由下面的語法可讓主機目前執行的排程工作可以容易閱讀
ps -o pid,sess,cmd afx | egrep -A20 "( |/)cron( -f)?$"
運行上面程式後會看到類似下面的畫面
1108  1108 cron
4288  1108 \_ CRON
4289  4289     \_ /bin/sh -c /path/to/my/crontab/accesscronjob.php
4290  4289         \_ /bin/bash /path/to/my/crontab/accesscronjob.php
.
.
.

第一欄是PID、第二欄位是Session ID、第三欄則是被排程啟動執行的程式。
若要刪除已經被排程啟動正在運行中的程式,可以藉由Session ID來kill所有相關的排程運行程式。

所以如下圖,若要停止正在運行的accesscronjob.php可以透過pkill語法來kill他的session ID "4289",如下
pkill -s 4289
參考網址