JavaScript と PHP だけで JSONP の挙動を確認したいのですが…

投稿者: Anonymous

jQueryを使用せず、JavaScriptとPHPだけでJSONPの挙動を確認したいのですが…

▼index.html

function check(arg) {
  var script = document.createElement('script');
  script.type = "text/javascript"; 
  script.src = 'hoge.php?arg='+arg;
  document.body.appendChild(script);
}
function callback(last) {
  console.log(last)
}

▼hoge.php

$arg = ($_GET['arg']);
print "callback($arg);";

このとき、引数を数字にすると問題ないのですが、文字列へ変更するとエラーになります
・check(9); … 〇
・check(‘沖縄’); … ×

・どう修正すればよいでしょうか?
・JSONPではなく、エスケープの問題?

解決

PHPで "なんとか $hoge かんとか" といった感じで変数の値を埋め込む場合、自動的に引用符で囲まれる、といったことはありません。もし callback('沖縄') という形に展開したいのであれば、自分で引用符で囲む必要があります。

が、JSONPということですし json_encode() を使ってはいかがでしょう。

$arg = json_encode($_GET['arg']);
print "callback($arg)";

なお $_GET に含まれる値は全て文字列になっているので、もし数値を数値としてJSONにエンコード、コールバック関数に渡したいのであれば、 is_numeric() 等で判別して数値に変換するといった処理が必要になります。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *