jQueryでxmlを(^ω^)prprする

xml

<?xml version="1.0" encoding="utf-8" ?>
<data>
    <response_code>200</response_code>
    <list>
        <record>
            <id>1</id>
            <body_>あああああ</body_>  //jQueryでxmlにアクセスする際、既存タグ名と重複は禁忌なので、bodyをbody_にして回避
        </record>
            :
            :
        <record>
            <id>9</id>
            <body_>いいいいい</body_>
        </record>
    </list>
</data>

js

$.ajax
(
    {
        type     : 'POST',
        url      : 'hoge.php',
        success  : function(xml)
                   {
                        $(xml).find("record").each
                        (
                            function ()
                            {
                                alert( $(this).find("body_").text() );
                            }
                        );
                    }
    }
);

注意点

$.ajaxxmlを取得し、それをprprする場合、
dataType:"text"
があるとIE8でfindを使っての値の参照ができない。

POSTできるフィールド数の上限

※データ量じゃないよ!
php_value max_input_varsで設定されており、デフォルトは1,000。
でもE○-CUBEとかは余裕で超えちゃう。
すごい設計だね!


ルートに置いてある.htaccessに「php_value max_input_vars 10000」とでも書けばいいんじゃあないかなあ

いいねとシェアのメモ

  • いいね
    • URL
      • 内容が変わらないページであれば自身のURLでOK
      • ?id=*等で内容が変わる場合は別ページを噛ませ、動的にog:type等を変更。JSのリダイレクトで本体のURLに遷移させる
    • og:type
      • ページの種類。よく分からないからコーダーさんに任せよう(提案)
    • og:title
      • 共有される際のタイトル
    • og:description
      • 共有される際の説明文
    • og:image
      • 共有される際の画像。複数設定で、ユーザが共有時に選べる
  • シェア
    • いいねと同じ

mixiいいねについて

og:typeなんかのパラメータはFacebookと同じらしい。
なのでいいね用ページのURLは「fb_like.php」等にせず、単なる「like.php」にしておくと共通で使えて、名前も気持ち悪くならない。

iframeを無視してリダイレクトしたい

iframeで呼ばれているページ内で、PHPでリダイレクトを行う場合、target="_top"みたいな設定が出来ないっぽい。
なので一旦以下のソースの様なページにリダイレクトし、そこからJS経由でリダイレクト。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:og="http://ogp.me/ns#">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Content-Language" content="ja" />
	<title>redirect</title>
	<script type="text/javascript">
	function hoge()
	{
		top.location.href="http:hoge.com";  //先頭のtopで【target="_top"】と同義らしい
	}
	</script>
</head>
<body onload="hoge();">
</body>
</html>