2019年1月23日 星期三

ajax 送出form資料時以javascript語法console.log出FormData用來檢查表單資料的方法

以form方式用ajax送出表單時,用以下javascript語法可以console.log要送出的資料,方便做檢查使用:

var formid=$('#myForm'); //#myForm是表單的ID
var formData = new FormData(formid[0]); 
for (var pair of formData.entries()){ 
   console.log(pair[0]+ ' ----> ' + pair[1]); 
}

2019年1月14日 星期一

cordova向php發出ajax請求時出現No 'Access-Control-Allow-Origin' header is present on the requested resource錯誤

雖然請求還是成功發出,但是會無法收到請求後的msg回覆
也可能導致在裝置上執行出問題
解決方式是在伺服器端的php程式上加上下列這行
header("access-control-allow-origin: *");

2019年1月11日 星期五

android studio 出現錯誤 No toolchains found in the NDK toolchains folder for ABI with prefix mips64el-linux-android

最新版的NDK移除了對mips abi的支援,而早期版本的android gradle plugin還是會檢查 mips toolchain有沒有存在 更多資訊

1.解決方式:更新android gradle plugin到3.1以上或更新版本
2.替代方案:在android sdk內建立mipsel的資料夾

如下(mac):
開啟終端機,然後輸入下方指令
cd ~/Library/Android/sdk/ndk-bundle/toolchains
ln -s aarch64-linux-android-4.9 mips64el-linux-android
ln -s arm-linux-androideabi-4.9 mipsel-linux-android

2019年1月8日 星期二

cordova 寫在index內的javascript無法執行

以cordova開發app時,在檔案內直接寫入如下
<script>
....
</script>

在Chrome的dev tool中檢查時出現下面的錯誤:
"cordova script Refused to execute inline script because it violates the following Content Security Policy....."

這是因為要降低XSS漏洞的風險,所以禁止了inline的javascript,這會使chrome把直接寫在index內的javascript語法以及一些行內事件如onClick的事件執行都擋住。

解決方法有兩種:

1.啟用行內的JS
在cordova專案的index.html上面也有標注:
Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
所以只要把unsafe-inline 加進 default-src內即可,如下
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
2.把script另外寫成一個js檔案,再連結進來即可