參考: https://www.jb51.net/article/23966.htm
https://yq.aliyun.com/articles/260389
javascript
mysql中的 日期格式是: HHHH-MM-DD , 時間格式 是 HH:MM:SS[.fraction]php
而 datetime和 timestamp數據類型的 格式 是 date+time, 即 二者的格式都是 : 'HHHH-MM-DD HH:MM:SS'html
注意兩類函數的區別: 一種是 返回當前日期或時間的函數; 一類是 提取 extract /截取 / 抽取 給定日期時間 變量中的 date 或 time.
好比: 獲取當前 日期和時間的函數: now(), curdate(), curtime(),
而提取當前時間中的 部分值: date(now())....java
關於current_timestamp , 它既是一個函數, 也是一個 "mysql的內置的 常量"!
因此 select current_timestamp()
返回當前的時間戳,
而 一樣的 select current_timestamp
一樣會 返回跟上面同樣的結果mysql
now([decision]) 有一個可選的 小數的精度位數, 最大是6jquery
6, 關於 datetime 和 timestamp數據類型的比較 參考: https://yq.aliyun.com/articles/260389
ajax
===================================sql
$(function(){...});
中, $ 裏面的 function()本是就是一個 匿名函數了, 而後 你 又在這個匿名 函數 內, 再去定義 一個 有名函數. 那麼這個 有名函數 就是 "函數中的函數"了, 就是一個 閉包函數了. 這個閉包函數 只是 在 $(function(){....// 在 這個裏面的 做用域, 其餘變量和函數 是可見 這個 "閉包的有名函數的...}); 除此以外, 在 $ 的 匿名函數的外面 , 是 看不到 裏面的 你定義的 "有名函數"的.$(function(){.....});
內部! 你要定義 能夠被 外部的 html標籤 所看獲得的 函數, 就不能 放在 $(function(){...}); 的匿名函數內. 應該直接 在 script標籤 內定義 有名函數.$(function(){...})..
只是一個 語句, 只是 在 要求執行某些 語句的時候, 要求在全部 dom元素都 加載後 再執行的時候, 使用. 總之, 若是是 單獨的 語句, 是能夠放在 $(function(){...})..
裏面的, 而若是是 函數 , 則必定 不能!這個閉包匿名函數 返回值 的問題, 已經 在多個地方 遇到過了: 閉包 = 匿名函數, 就至關於 一個盒子中的盒子, 咱們在外面 (有名函數 定義的外面 ), 是能夠看獲得 外面的那個盒子的, 可是咱們看不到 裏面的 那個盒子. 所以, 裏面的 那個盒子(匿名函數) 的返回值 , 咱們在外面是得不到的. 事實上, 裏面那個閉包函數的返回值, 若是不用 全局變量/或 有名函數中 的 變量 去 接受的話, 那麼 它在 執行 完畢後, 閉包函數的 棧內存就被清除了, 你在外面 就再也沒法 跟蹤了.json
所以, 好比 在$.each('iterated', function(){....return false; } )
遍歷中 , 裏面的 那個閉包 函數的 return false, 只是 可以終止each 對 iterator 的遍歷, 這個 return false, 並不能返回到 each 語句 的外面去, each語句所在的外部 有名函數 實際上 是沒有 返回值的!vim
=====================================
總的來講 , 有兩種:
一是: $('domselect')
的 load 函數
二是: 全局的 $函數: 包括 $.get, $.post , $.ajax 其中 get和post 是 $.ajax({type: 'get' , 'post',....})的 簡寫. 因此 對於 簡單的ajax就用 $.post, 對於複雜的 ,就統一的用 $.ajax
並且 $.ajax中 包含複雜的 ajax事件(ajax事件, 就用 ajax方法內部來寫就哈了, 不要再 去 單獨的 調用ajax事件了)
$.ajax的data: 傳遞是是一個json格式的字符串, 而$.post 的data傳遞的是一個 json的對象。
而 complete,是指此次ajax 事件完成, 那麼 它也無論ajax 請求發送、傳遞是否真的成功! 它只管事情結束了。
error事件的錯誤信息, 一般輸出到 Firefox的調試控制檯。
animal([speed], [easing], function()...)
可是, 若是沒有特殊要求, 就只是 指定 一個 "動畫"持續的 時間 /長短 就能夠了關於 dom元素對象的 error事件: 主要包括兩種類型的錯誤事件: 一是 $(window) 元素記錄 script腳本的 錯誤, 二是 img的 src屬性 無效時 觸發error事件
使用 $(window).error(function(){msg, url, line){...}) 能夠記錄 script腳本的錯誤:
例子:
$(window).error(function(msg, url, line){ jQuery.post("js_error_log.php", { msg: msg, url: url, line: line }); });
關於jquery的屬性函數,有 兩個:attr 和 prop : 關於他們的區別,參考 https://www.cnblogs.com/linsx/p/6800136.html
和 https://www.cnblogs.com/zhwl/p/3520162.html
主要是: prop是用來設置 具備 true/false 值的屬性, 好比 checked, selected, disabled 狀態屬性。 而attr是設置 非 boolean屬性的。 attr的兩種參數: 一是使用 js對象{....}的方式, 一是使用 attr('attrName', attrValue)的方式
注意的是: checked=「checked」或‘true’,只是決定了 defaultChecked 頁面在第一次載入時的元素的狀態值, 跟後來元素是否被checked的狀態值無關
尋找 包含元素的兩個方法,一個是 find, 一個是children。 他們的區別是: find查找的是 全部的 (祖先/)後代元素,即: descendant, 而children查找的則是 直接的下一級(父子)元素。
==============================
$.messager.progress('title', 'msg', 'warning', callback_func)...
要注意 , 最後一個參數 是回調函數, 是異步的!===================
參考: https://blog.csdn.net/yangzhongxuan/article/details/6542808
要充分運用 光標 跳躍的 技巧!
<br>
, \n是在 php中的換行. 又好比, 全部的標籤好比script腳本標籤, 自己也不過是一個普通的 html標籤而已.提交按鈕, 參數是字符串類型....就這麼寫 <input type="button" class="btn btn-primary btn-large" value="提交" onclick="chksub('{:I('get.jspinyin')}');"> 反之, 若是這樣寫就會出錯: <input type="button" class="btn btn-primary btn-large" value="提交" onclick="chksub(" + {:I('get.jspinyin')} + "');"> 由於這裏的 兩個加號會按字符串原樣顯示, 根本不會做爲js代碼中的 字符串拼接來解釋, 甚至, 即便你在onclick ="javascript: ....."寫上 javascript: 也不行, 由於 它只認你前面的 那個 <input> 標籤, 而不認爲是 <script>標籤
if($.trim($(this).val()=='') flag=false; return false; ....
了, 結果致使: each 方法不管如何 都 只是執行了一次, 就退出了. 事實上, 就只是檢查了 "第一個 " input框 是否爲空了. 後面的都沒有檢查到. 很明顯, 這樣的邏輯不是咱們想要的function chkAllInputUnempty(pinyin){ var flag=true; var fi='form#'+pinyin+' table tbody input'; $(fi).each(function(){ if($.trim($(this).val())== ''){ // 這裏的 大括號是必需要加的!! 若是不加就只檢查了 第一個input框是否爲空 flag = false; return false; } }); return flag; }
要修改easyui的確認消息框中的ok/cancel的顯示文字: $.messager.defaults = {ok: '是', cancel: '否'};
$.messager.confirm(...)
的執行方式是 異步 的, 因此 , 要使用 $.messager.confirm來決定是否關閉tabs的標籤, 是比較麻煩的. 確實要使用異步的方式, 能夠參考: http://www.jeasyui.net/plugins/160.html
, 裏面有詳細的例子:onBeforeClose: function(title, index){ var target = this; $.messager.confirm('注意', '真的要關閉: "'+title+'" 標籤頁嗎?<br>若是評分沒有提交,則以前所做的評分將會丟失!', function(r){ if(r){ var opts=$(target).tabs('options'); var bc=opts.onBeforeClose; opts.onBeforeClose=function(){}; $(target).tabs('close', index); opts.onBeforeClose = bc; } }); return false; }
var para = 'tea=' + tit + '&stud=' + '{$stu}' + '&cls=' + '{$curCls}'+'&py='+py if(tt.tabs('exists', tit)){ tt.tabs('select', tit); }else{ tt.tabs('add',{ title:tit, href:"{:U('pjcontent')}"+"/?"+para, // 這個是tp在U 方法中 傳遞附加參數 的 最關鍵的一步 寫法. 在原來的地址(.../foo.html)後面, 是沒有 斜槓的! 因此 要拼接字符串: '/?', 而後加上參數字符串用 & 鏈接的 closable:true,
$.messager.alert
! 由於 easyui的messager 不是獨佔的, 不會阻塞後面的函數的執行, 這樣的話, 若是調用這個函數後, 後面還有其餘提示框的話, 會形成同時有多個提示框出現的狀況. 因此要避免在一個函數內同時出現多個 messager的狀況!============================
dialog的屬性: closable: false, // 是否顯示關閉按鈕
if(subBtnClkTimes==0){ /* 若是是第一次提交,則採用 "add方法進行插入記錄" */ // getScore(); // 能夠經過這個函數, 來填充div的內容 $('#dd').dialog({ title: '保存評分', width: 430, height:320, //left: 230, //top: 500, closable: false, // 是否顯示關閉按鈕 cache: false, content: getScore(jspinyin, curPjTeacher), // 或者經過這個 函數調返回值 來填充 dialog的內容 modal: true, buttons:[{ text: "提 交", iconCls: 'icon-ok', handler: function(){ $('#dd').dialog('close'); } }, { text: '取 消', iconCls: 'icon-cancel', handler: function(){ $('#dd').dialog('close'); } }] });
實際上, 在 彈出 dialog的時候, 是 在 body的最後面(包括 最後面的 js代碼以後), 插入了 一個div.panel.window , 這個div包括幾個部分, 其中包括一個: div.panel-header.panel-header-noborder.window-header, 這個是標題, 還有一個是dialog的主體內容部分, 就是 div.panel-body.panel-body-noborder.window-body, 可能還包括一個div.dialog-button按鈕部分.
=============================
<br>
, 使用 : :s/\\n/<br>/g
也就是: vim的替換 , 要用 反斜槓 轉義 , 而 標籤 則不須要轉義js的元素增刪操做: jsarr.push(...), jsarr.unshift(...), jsarr.split(index, howmany, item1, item2,,,,), jsarr.slice(...), string.split等.
在javascript中, 若是 要對相同的 引號進行嵌套, 好比在 單引號中 嵌套 單引號, 在雙引號中 嵌套 雙引號, 這時, 要用 反斜槓進行 轉義, 可是 一樣的 需求 , 在html中 是不須要進行轉義的, 能夠直接進行書寫!
=================================
注意 : status 和 statusCode 和 statusText不同: status是表示狀態的 數字, 好比: 200, 404, 500等, statusCode是代碼好比: ajax/v.., statusText纔是 表示成功或失敗的字符串文本,好比: success, 好比: "Not Found" 好比: "Server internal error" 等.
而 error等傳入的參數就包括: xhr , 由於要進行更加深刻的錯誤調試!
dataType表示返回的數據類型, 主要有: html, script , text ,json:
其中: html和script中的js會首先在服務器端執行, 完了以後,做爲文本返回. text返回的也是一個文本字符串
json 的話, 服務器端確實 是返回的 json格式的字符串, 可是 在success等回調函數的 js函數中, 根據 jquery的文檔說明可知: ajax這個方法, 在給success的回調函數參數以前,, 已經把返回的json格式字符串 事先用 js語言的 JSON對象的方法: JSON.parse('json格式的字符串') 來解析, 已經 生成了 js對象, 而後 才 返回給 /傳遞 給 success的回調函數做參數了. 因此 在回調函數 中 就能夠 直接做爲 js對象處理了, 直接做爲js對象 來 使用了, 好比:
判斷 js的數據類型: 有 7種 : number, string, boolean, null, object , undefined, function 用 typeof 這個 "一元運算符" 來查詢: typeof不是函數, 因此能夠 不加括號, 由於是一元的, 因此將它寫在 變量的前面.
$.ajax({ type: 'post', url: "{:U('url')}", dataType: 'json', // 返回json格式的字符串, 即在服務器端頁面 要 拼接成 標準格式的json格式字符串. data:{'jsname':jss, 'foo": bar}, success: function(ret, statusText){ console.log("ret的類型:" + typeof ret); // 查看json格式的返回 給回調函數的結果 的數據類型 console.log(ret.name+ ':' + ret.age ); // 按js對象 來進行 元素成員的調用 console.log(statusText); }, error: function(xhr){ console.log(xhr); } }); 在 ajax的js返回值是: ret的類型: object (/// 很清楚的說了, 是 一個js對象了) jack:20 // 按js對象的 方式 來 使用了 success typeof {"a": 11, "b" : "22"} "object" typeof '{"a": 11, "b" : "22"}' // json格式的字符串. "string"
==========================