ページ 11

AjaxでPHPにデータを渡そうとしたのですが

Posted: 2011年3月30日(水) 21:01
by MoNoQLoREATOR
AjaxでPHPにデータを渡そうとしたのですが、$_POST[]の部分で、指定したキーがみつからないというエラーが出てしまいます。

$_POST["data"] → "data" が見つからないというエラーが出る

PHPを呼び出す際に何かまちがっているのだと思うのですが、どうでしょうか?

※fileCom はグローバル変数です

コード:

function send()
{
	//↓IEとそれ以外でオブジェクトの生成方法を変えている↓
	if (window.XMLHttpRequest){
		fileCom = new XMLHttpRequest();
	}else{
		if (window.ActiveXObject){
			fileCom = new ActiveXObject("Microsoft.XMLHTTP");
		}else{
			fileCom = null;
		}
	}
	//↑IEとそれ以外でオブジェクトの生成方法を変えている↑
	
	//↓コメントの保存↓
	fileCom.open("POST", "writeCom.php");
	var gotCom = document.getElementById("edit").value;
	
			//コメントサイズ取得
			var getedComSize;
			if(document.getElementById("hutuu").checked==true){
				gotComSize = "30";
			}
			if(document.getElementById("dai").checked==true){
				gotComSize = "50";
			}
			if(document.getElementById("tokudai").checked==true){
				gotComSize = "80";
			}

	fileCom.send("comData=gotCom&comSizeData=gotComSize");
	//↑コメントの保存↑
}
PHPでは
$comment = $_POST["comData"];
$comSize = $_POST["comSizeData"];
と指定しています。

Re: AjaxでPHPにデータを渡そうとしたのですが

Posted: 2011年3月30日(水) 21:25
by Ciel
setRequestHeaderメソッドを使って、↓のようにしてみてください。

fileCom.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");

文字コードは自分が決めた文字コードにしてくださいね。

Re: AjaxでPHPにデータを渡そうとしたのですが

Posted: 2011年3月30日(水) 21:57
by kimuchi
エラー以外の部分で気になった点があります。

>31行目

コード:

fileCom.send("comData=gotCom&comSizeData=gotComSize");
この部分がおかしいです。
おそらく「gotCom」変数と「gotComSize」変数の情報を渡そうとしているのだと思いますが、
これでは「gotCom」と「gotComSize」の文字列データが渡されてしまいます。

コード:

fileCom.send("comData="+gotCom+"&comSizeData="+gotComSize);
このようにしてみて下さい。

追記:
以前紹介したサイトなんですが、あちらのサイトはAjaxとは何か、というレベルからの学習なので
PHPを介すような実用的な技術を扱っていません。
「ajax php」などで検索すればより有用な情報が得られると思います。

PHP+Ajaxで分かりやすいサンプルがあったので挙げておきます。
http://www.phppro.jp/school/ajax/vol1/4

Re: AjaxでPHPにデータを渡そうとしたのですが

Posted: 2011年3月31日(木) 12:13
by MoNoQLoREATOR
ありがとうございます。解決しました。

ちなみにこれでコメント機能が完成しました。徹頭徹尾お世話になり、本当にありがとうございました。