PG WORKS

PHPやLinuxサーバなどのノウハウや、便利なツールを紹介していきます。

よく使うはずなのに忘れてしまうjQueryコード

jQueryを書くときに忘れやすいコードをまとめて紹介していきます。
※随時更新します。

最新のCDNは、前回アップした記事の「jQuery読み込み」を参照

zen6a.hateblo.jp

イベント関係

zen6a.hateblo.jp

チェックボックスの状態確認

if($("#id").prop('checked')) {
/*チェック済み*/
}else{
/*チェックなし*/
}

該当のチェックボックスにチェックをつける

$('#id').prop('checked',true);

/*チェックをはずすとき*/
$('#id').prop('checked',true);

セレクトボックスを選択する

/*optionのvalueが1になっている項目に選択*/
$('#id').val(1);

ID名の取得

$('#id').attr('id');

クラス名の取得

$('#id').attr('class');

クラス名の判定

$('#id').hasclass('class名');

表示/非表示の交互に切り替え

$('#id').toggle();

form値を取得してajaxでPOST

var formdata = $('#formname').serialize();
$.ajax({
    url: url,
    type:'POST',
    dataType: 'text',
    data : formdata,
}).done(function(data) {
/*成功時の処理*/
}).fail(function(XMLHttpRequest, textStatus, errorThrown) {
/*失敗時の処理*/
})

form値を追加

var formdata = $(form).serializeArray();
formdata.push({param1: 'value1', param2: 'value2'});
$.ajax({
    url: url,
    type:'POST',
    dataType: 'text',
    data : formdata,
}).done(function(data) {
/*成功時の処理*/
}).fail(function(XMLHttpRequest, textStatus, errorThrown) {
/*失敗時の処理*/
})

.onイベントの使い方(動的に追加したものも判定

$(document).on('click', '#button', function(){
/*ここに処理記述*/
});

コンソールにログを出力

console.log('サンプル');

【2018年】おすすめのphpの開発環境(Windows編)

Windows環境でPHPを組むときに便利なツールを紹介
PHP開発ツールでは、コードアシスト機能とSFTP機能がついたもののみ紹介していきたいと思います。

PHP開発ツール

SublimeText

www.sublimetext.com

スクロールがしやすく、アシスト機能も使いやすいです。
SFTP経由でのファイルアップロード機能は、パッケージをインストールすることで使えます。
便利なパッケージがそろっているため、一番使いやすいかも。

NetBeans

NetBeans NetBeans 日本語サイト

PHP開発ツールでは珍しい日本語の公式有り。
ローカルにファイルをダウンロードしてから、SFTP経由でファイルアップロード。
NetBeansで開発したものは、Aptana Studio3で見るとインデントがおかしなことに。。。設定で解消できるのか不明。。。

Aptana Studio3(アプタナ スタジオ)

f:id:zen6a:20150917224713p:plain

↑Windows10の環境だとインストールができなかったので、下記のサイトからダウンロード。
Releases · aptana/studio3 · GitHub

サーバ内にあるファイルを直接操作できるリモート機能があります。
ただ、コードが長くなるともっさりしたり、保存ができなくなったりと、挙動がおかしくなることも。
ツールを再起動すれば問題なく使えます。

データベース管理ソフト

HeidiSQL(ハイジエスキューエル)

f:id:zen6a:20150917225834p:plain
Download HeidiSQL

MySQL/postgreSQL両方アクセスできるツールです。
直観でほぼ思った通りの操作ができることと、フィルタなどソートも簡単にできて便利です。

SCPソフト

f:id:zen6a:20150917231239p:plain
WinSCP :: Official Site :: Download

FTPやSCP接続にて、ファイルのダウンロードやアップロードするソフトウェアになります。
レンタルサーバVPSなど接続する際には、このツールで接続する方が便利ですね。

formのsubmitボタンを押したときにajaxでさらにPOSTしたときの動作について

WordPressプラグインをカスタマイズすることがあり、
どうしてもフックができなくて致し方なく、submitボタンを押したときにajaxで追加でPOSTする処理を入れました。

しかし

PCだと正常に動作するのに、スマホだとエラー(undefinedエラー)になり更新されない現象が判明。

なので、一時的に非同期処理しないようにajax部分に「async:false」を追加すると反映されることが確認できました。

var formData = $('form').serialize();
$.ajax({
	type: "POST",
	dataType:"text",
	url:"sample.php"
	data: formData,
	async: false,
	}).done(function(res){
    });
});

似たようなサンプル作り、同じ現象になるか試したいと思います。

↓↓↓

プログラムのサンプルと結果を追記しました。

テスト結果「ダメなパターン」

index.php

<html>
<head>
	<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
</head>
<body>
	<form method="POST">
		<input type="text" name="txt" value="">
		<input type="submit" id="testpost" value="POST実行">
	</form>
<script type="text/javascript">
$(document).ready(function(){
    $(document).on('click', '#testpost', function(){
		var formData = $('form').serialize();
		$.ajax({
			type: "POST",
			dataType:"text",
			url:"ajaxpost.php",
			data: formData
		}).done(function(res){
			alert("ok");
		}).fail(function(jqXHR, textStatus, errorThrown){
			alert("ng"+jqXHR.status+':'+textStatus+':'+errorThrown);
		});
	});
});
</script>
</body>
</html>

ajaxpost.php
※テストでファイル作成しただけなので、何も記述しなくても問題ないです。

ajaxpost


「async: false」をなしで、スマホでテストした結果「ng」のほうに飛んでしまいます。

「jqXHR.status」「textStatus」「errorThrown」でエラーを出力してみると、

jqXHR.status=0
textStatus=error
errorThrown=

エラーの詳細が書かれてません。。。

似たようなエラーが出た場合は、「async: false」を追加、または、ajaxだけでPOSTする処理に変更したほうが良いかもしれません。

そもそも、2重POSTする時点でおかしいですが、似たようなエラーに遭遇された方に参考になれば嬉しいです。

コード検索にオススメ!サクラエディタのGrep検索を使おう

大量のプログラムを調べるときに、サクラエディタGrep検索を使うと、当てはまる箇所を一覧で表示してくれる便利な機能があります。

sakura-editor.sourceforge.net


SakuraEditorWiki
サクラエディタwiki

Grepの使い方

  • 目がフォルダに向かっているアイコンをクリック

f:id:zen6a:20180130230935p:plain

※複数のソースコードがある場合、フォルダごと選択すると一括で調べてくれます。

  • 「条件」に調べたいコード内容を入力します。

f:id:zen6a:20180130230940p:plain


あとは検索して、結果が表示されるのを待つだけ。

条件に当てはまったものが、下記のように一覧で表示されます。


f:id:zen6a:20180130230942p:plain


一覧に表示された部分をクリックすると、対象のファイルを開いてくれます。

サクラエディタは、カスタマイズすれば、phpの関数も色分けしてくれたりと、大変便利なエディタです。

正規表現も使えるので、INSERTクエリーを作るときに長保してます。

hotmail宛てにメールが送れない件

hotmail宛てにメールを送信しても、エラーが返ってくるようであれば、
対象のIPが受信拒否されている可能性があります。

http://mail.live.com/mail/troubleshooting.aspx#errors

対処法

1.マイクロソフトに問い合わせをしてみる。

https://support.microsoft.com/ja-jp/getsupport?oaspworkflow=start_1.0.0.0&wfname=capsub&productkey=edfsmsbl3&locale=ja-JP&ccsid=636299860276744079&wa=wsignin1.0

早ければ数時間後、遅くても1日後には、マイクロソフトから返信が届くと思います。
これで解決すればいいのですが、解除後すぐ規制されるようでしたら、サーバの乗り換えをオススメします。

特に、共有サーバーだと、同じIPを利用している会社がほとんどで、使う頻度が高いユーザーが混じると、ブロックされる可能性が高くなります。
共有サーバーではない場合、短時間でメールの送りすぎなので、IP分散するか、一時的にブロックされたIPを切り替えることで対処が可能です。
↑IPの切り替えは、解決にはなってないため、送る通数を絞ったり、スパム対策をしたほうが良いでしょう。

2.別のサーバに移転する

IPが原因なので、対処してもらえないのであれば、サーバを移転するしかありません。
事前に、検討しているレンタルサーバ会社に問い合わせをして、規制されたときの対処、過去に規制されたことがあるかなど、確認するといいでしょう。

気になってたCPIに問い合わせてみた

何度もメール送っても、規制が解除されず、レンタルサーバを探していたのですが、
CPIというレンタルサーバが気になって、この件について問い合わせてみたところ、

  • 共有サーバでも、契約者ごとにIPを設定している
  • もし規制かかった場合、対応してくれる

ただし、無料のSSLが使えないため、Let's Encryptが対応すれば、契約したのですが、有料のSSLが高くて無理でした。。。

毎年改善している動きが、見受けられるので、今後に期待ですね!