発生したいくつかの問題と解決策
序文
私たちの研究と仕事では、常にいくつかの問題に直面します。要約して記録しないと、すぐに忘れてしまいます、、、
1. jqueryajaxの変数に値を割り当てることができない理由と解決策
JQueryのAjaxを使用してバックグラウンドからデータを抽出し、それをグローバル変数に割り当てたいのですが、割り当てることができません。なぜですか?
理由は実際には非常に単純です。使用するAjaxは非同期操作です。つまり、データを割り当てるときにデータが抽出されていないため、もちろん割り当てることはできません。同期操作に変更するだけです。
解決:
次のように非同期を同期に変更し、非同期を追加します:false、割り当てることができます
var user = null
$.ajax({
url: "/user/findByName",
type: "get",
dataType: "json",
async: false,
data: {
name:name
},
success:function (data){
if (data.data.user!=null){
user = data.data.user
}
}
})
2.日付を指定された形式に変換します
次のメソッドをDateプロトタイプに追加します
Date.prototype.format = function(fmt) {
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt)) {
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("("+ k +")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
}
return fmt;
}
追加後、このように呼び出すことができます
var time = new Date().format("yyyy-MM-dd hh:mm:ss");
console.log(time1);
このように呼ぶこともできます
var time1 = new Date().format("yyyy-MM-dd");
console.log(time1);
3.jQueryが追加に追加を使用するノードの無効なソリューションはイベントを追加できません
新しく追加された要素のイベントが失敗することがあります。その理由は、イベントを初期化するときに、これらの新しく追加された要素がないため、イベントをバインドできないためです。
これを行うには、イベントをバインドするためのjQueryのonメソッドが必要です。対応するイベントを直接追加することはできません。例としてクリックイベントを取り上げます。
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("div").on("click","p",function(){
$(this).slideToggle();
});
$("button").click(function(){
$("<p>This is a new paragraph.</p>").insertAfter("button");
});
});
</script>
</head>
<body>
<div style="background-color:yellow">
<p>This is a paragraph.</p>
<p>Click any p element to make it disappear. Including this one.</p>
<button>Insert a new p element after this button</button>
</div>
</body>
</html>