WordPressを実践勉強中、ajaxについてうにゃ。

2017.10.27

Logging


WordPressでajaxを動かそうするとき、WordPressのルールに
則って動かさないと動かないらしい。
なので、このような記述を書かないといけない。
まず、非同期処理の送信先に、admin-ajax.phpというファイルを指定。
そこへPOSTかGETしないといけない。そしてデータとして
アクションさせるファンクション名を記述して
上げないといけないらしい。
こんな感じになる。

$( '#submit' ).on( 'click', function(){
    $.ajax({
        type: 'POST',
        url: <?=admin_url('admin-ajax.php')?>,
        data: {
            'action' : 'hoge_f',
        },
        dataType: "json",
        success: function( obj){
            alert( obj );
        }
    });
    return false;
});

次にWPテーマのファンクションファイルに下記を追加記述。

function hoge_f(){
echo json_encode($_POST);
    die();
}
add_action( 'wp_ajax_hoge_f', 'hoge_f' );
add_action( 'wp_ajax_nopriv_hoge_f', 'hoge_f' );

ここでミソなのが、die();という部分、これを除けると0という文字も出力されてしまう。
ちなみにwp_ajaxがログイン時の振る舞い、wp_ajax_noprivがログアウト(=訪問者)時の
振る舞いだそうだ。
この2つの勘所だけ覚えとけばWordPressで非同期処理が
行えるのではないだろうか、もっと詳しく知りたい場合、admin-ajax.phpの中身を
見たらよいのだろうけど、にわかWordPress職人さんはコレだけ
覚えとけば良さそうだと。
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

'hoge_f', 'wp_ajax_nopriv_hoge, Action, admin-ajax.php, AM, click, dataType, echo json_encode, function hoge, function hoge_f, obj, POST, return false, submit, WordPress職人, ファンクション, ファンクションファイル, ログアウト, , 非同期処理,

PHPとVS2015をJSONで連携する。第二弾

2016.06.18

Logging


VB2015側

Imports System.Net
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim sTargetUrl As String = "http://zip358.com/tool/2015-12-01-smp/index.php"
        Dim objWeb As WebClient = New WebClient()
        Dim bResult As Byte() = objWeb.DownloadData(sTargetUrl)
        Dim sJson As String = System.Text.Encoding.UTF8.GetString(bResult)
        Dim json_obj As Object = JsonConvert.DeserializeObject(sJson)
        RichTextBox1.Text = json_obj("1")("id") & json_obj("1")("name")
    End Sub
End Class

PHP側

<?php
$hoge = array();
$a = 'jsonキタ━(゚∀゚)━!name';
for ($i = 1; $i < 100; $i++)$hoge[$i] = array("id"=>$i,"name"=>$a);
//echo $hoge[$i]["name"];}
header('Content-type: application/json;charset=UTF-8');
echo json_encode($hoge, JSON_UNESCAPED_UNICODE);

以前、PHPとVS2015をJSONで連携する。という記事を
掲載したと思いますが、第二弾として、配列化して取得する方法を
記載したいと思います。
今回使う吐き出し側は以前と変わっていませんが
取り出し側が以前と少し変わってStringで返ってきたjsonデータを
デシリアライズしてから、Objectに流し込んでます。
下記のような結果が得られます。(画像参照)

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

AM, Content-type, Dim bResult As Byte, Dim json_obj As Object, Dim objWeb As WebClient, Dim sJson As String, Dim sTargetUrl As String, e As EventArgs, echo json_encode, End Class, Handles Button1.Click, Imports System.Net, JsonConvert.DeserializeObject, New WebClient, objWeb.DownloadData, Private Sub Button1_Click, Public Class Form1, RichTextBox1.Text, sender As Object, System.Text.Encoding.UTF8.GetString, VS2015, デシリアライズ,