- PR -

prototype.jsでのJSON受け取り

1
投稿者投稿内容
くろ
常連さん
会議室デビュー日: 2004/08/17
投稿数: 42
投稿日時: 2009-04-09 23:57
こんばんわ
書籍「入門Ajax増補改訂版」を見ながら、Ajaxの勉強をしています。

書籍に記載されているように、PHPでjson形式のデータを出力し、
htmlで受け取り、受け取ったデータを表示をするというものなのですが、
上手くいきません。

+-----------------------------------------------------+
php

<?php
$data = mb_convert_encoding('X-JSONテストです',"utf8","auto");

mb_http_output('utf-8');

header("Content-Type: text/html");
header('X-JSON:'.'({"id":1000,"name":"TestJSON"})');

echo $encode;
?>

+-----------------------------------------------------+
html

<script type="text/javascript" src="../js/prototype.js" charset="utf-8"></script>
<script type="text/javascript" >
function getFile(url) {
var oj = new Ajax.Request(
url,{ onComplete : onloadded }
);
}

function onloadded(resoj ,json) {
alert(resoj.responseText);
$('res').innerHTML = resoj.responseText;
$('id').innerHTML = json.id;
$('name').innerHTML = json.name;
}
</script>

<div id="res"></div>
<div>id: <span id="id"></span></div>
<div>name: <span id="name"></span></div>

<input type="button" value="json読み込み" onclick="getFile('./test_json.php')">
+-----------------------------------------------------+

上記の感じでやると、jsonのデータが受け取れていないみたいで、

自分で、alert(resoj.responseText); を追加し、
戻りを確認してみたら、PHPのソースコードが戻って来てしまいます。

色々調べてみたのですが、それらしい情報がありませんでしたので、
どなたかアドバイスを頂けたらと思います。

Windowd XP
PHP 5.2.0
Apache2.2
prototype.js 1.6.0.2

初歩的な質問だとは思いますが、宜しくお願いいたします。
デューン
大ベテラン
会議室デビュー日: 2004/04/21
投稿数: 174
お住まい・勤務地: Tokyo
投稿日時: 2009-04-10 03:42
こんばんは

引用:

くろさんの書き込み (2009-04-09 23:57) より:

自分で、alert(resoj.responseText); を追加し、
戻りを確認してみたら、PHPのソースコードが戻って来てしまいます。



これは「<?php」とかもダイアログに表示されちゃう状態を指してますか?
だとすればApacheの設定が不十分だと思われます。

きちんとconfのDirectoryディレクティブにphpの設定をされてもいいでしょうが、
とりあえずやってみたいだけというのであれば、XAMPPというのをインストールされるとphpやMySQLも使える状態でApacheがインストールされるのでこういったものを使われるのもいいかもしれませんね。
(でも80ポート(HTTP通信用のポート)が既に使われてると、設定いじらなきゃいけないんですよね。今のApacheを停止した状態でインストールされるとよいかも。)


# prototype.jsにあまり明るくないので間違ってるかもしれませんが、気になった点
# DIV(res)にJSON埋め込んでもただのテキストになっちゃうかも
# onCompleteでonloaddedが呼ばれるときに第二引数(json)にはなにもはいらないかも
# alert(json)してみるとわかるかもしれません。

# 眠気ですこし饒舌かもしれません。

くろ
常連さん
会議室デビュー日: 2004/08/17
投稿数: 42
投稿日時: 2009-04-10 04:04
デューンさん

こんばんわ
遅くにご返答ありがとうございます。

> これは「<?php」とかもダイアログに表示されちゃう状態を指してますか?
はい、alertで表示させますと、<?php 〜 ?> で表示がされてしまいます。

> だとすればApacheの設定が不十分だと思われます。
ご指摘ありがとうございます。
早速、確認してみます!


> # DIV(res)にJSON埋め込んでもただのテキストになっちゃうかも
> # onCompleteでonloaddedが呼ばれるときに第二引数(json)にはなにもはいらないかも
> # alert(json)してみるとわかるかもしれません。

貴重なアドバイスありがとうございます!
デューンさんのアドバイスを参考にソースのほうも見直していきたいと思います。

本当に遅くにありがとうございました
1

スキルアップ/キャリアアップ(JOB@IT)