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職人さんはコレだけ
覚えとけば良さそうだと。
 

タグ

'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に流し込んでます。
下記のような結果が得られます。(画像参照)

タグ

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, デシリアライズ,