Learn or Die

生涯勉強。Macです。

Ajaxの使い方

Ajaxとは

Ajaxとは「Asynchronous JavaScript + XML」の略。
Asynchronous:非同時性・非同期の意

つまり、JavaScriptXMLを使って非同期にサーバとの間の通信を行うこと。

Ajaxを支える機能たち

XMLHttpRequest
ブラウザ上でサーバーとHTTP通信を行うためのAPI
JavaScript
・DOM
XML
※現在では、XMLではなくJSONがよく使われている
JSON

コード

たとえば、プルダウンで性別を選択すると非同期でサーバーと通信し、DBを更新するような場合。

$(function(){
    //DB更新等の処理が書いてあるファイルのパス
    let url = '/process.php';

        $.ajax({
            url:url,
            type:'POST',
            data:{
                'sex':$(`#sex`).val()
                }
            })
            // Ajaxリクエストが成功した時発動
            .done( (data) => {
                alert("登録に成功しました。");

            })
            // Ajaxリクエストが失敗した時発動
            .fail( (data) => {
                alert("登録に失敗しました。時間をおいてもう一度お試しください");
            })
            // Ajaxリクエストが成功・失敗どちらでも発動
            .always( (data) => {

        });
}

知っていると便利なgit diffのオプション

  • Working directory:ローカル
  • ステージングエリア:git addされるところ
  • ローカルリポ:git commitされるところ

オプション一覧

No 用途 コマンド
1 Working directoryとステージングエリアのdiffを確認する git diff
2 Working directoryとローカルリポのdiffを確認する git diff HEAD
3 ステージングエリアとローカルリポのdiffを確認する git diff --staged HEAD
4 特定のファイルのdiffを確認する git diff -- <ファイル名>
5 コミット同士のdiffを確認する git diff <コミットID> <コミットID>
6 ブランチ同士のdiffを確認する git diff <ブランチ名> <ブランチ名>

豆知識

「5.コミット同士のdiffを確認する」で、最新のコミットと一個前のコミットの差分を見たい場合、わざわざコミットIDを指定しなくても、

#古いものを左、新しいものを右に指定するのが一般的
$ git diff HEAD^ HEAD

で確認することができる。

  • HEAD:アクティブなブランチの最新コミットを指す
  • HEAD^:HEADの一つ前のコミットを指す
  • HEAD^^:HEADの二つ前のコミットを指す

git mergeのやり方

前提

マージ先: master
マージ元: new-feature

方法

#masterブランチに切り替える
$ git checkout master
#差分を確認。git diff <ベースブランチ> <作業ブランチ>
$ git diff master new-feature
#new-featureブランチをmasterブランチにマージする
$ git merge new-feature
# マージされていることを確認する
$ git log

git logについて

git logのよく使うオプション一覧

git log --online

各コミットを一行で表示する。
得られる情報はコミットID(省略形)とコミットメッセージ。

$ git log --oneline
7d03176 (HEAD -> main) name changed
095671a first commit
b52de06 (origin/main, origin/HEAD) Initial commit

git log --graph

各コミットを線で結ぶ。
どこからブランチを切ったか視覚的にわかる。

git log --

特定のファイルの情報を表示する。

$ git log -- newfile2.txt
commit 7d0317607ab505170144813483f199 (HEAD -> main)

    name changed

git log --follow

ファイル名の変更も考慮してコミット履歴を表示する。

特定のコミットの詳細を表示する

$ git show <コミットID>

git mvとmvコマンドの違い

git mv

git mvでファイル名を変更した場合、Git側はファイル名が変更されたことを理解し「renamed」と表示される。

$ ls
README.md   newfile.txt
# ファイル名をnewfile2.txtに変更
$ git mv newfile.txt newfile2.txt
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    newfile.txt -> newfile2.txt

mvコマンド

mvでファイル名を変更した場合、Gitは名前変更前を削除、名前変更後を未追跡の状態にする。

# ファイル名をnewfile2.txtに変更
$ mv newfile.txt newfile2.txt
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    newfile.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    newfile2.txt

だが「git add .」をすると、git mvのときと同じようにちゃんとrenameされたことになっている。

$ git add .
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    newfile.txt -> newfile2.txt

どうしてstatusがgit mvと同じ結果になるのか

理由はgit mvが下記の省略形だから。

$ mv newfile.txt newfile2.txt
$ git add newfile2.txt
$ git rm newfile.txt

そのため、mvをしているのとやっていることは変わらないので同じ結果になる。

git add / git commit / git pushを取り消す

git addを取り消す

$ git reset HEAD ファイル名
#すべてのaddを取り消す
$ git reset HEAD .

覚えなくても、git statusでコマンドを確認できます。

$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   newfile.txt

git commitを取り消す

直前のコミットを取り消す。

$ git reset --hard HEAD^