ajaxでのPOST送信について

PHPについてのコミュニティです。

Web言語の一種で、perlに並ぶ有名な言語です。
あの某有名動画サイトや、某SNSサイトでもPHPが使われています。
そんなPHPに少しでも可能性を見た人達が、とりあえず参加だけでもしておこうとうコミュニティです。
返信
アバター
Ciel
記事: 252
登録日時: 9年前

ajaxでのPOST送信について

#1

投稿記事 by Ciel » 8年前

お世話になります。

先日、http://dixq.net/forum/viewtopic.php?f=51&t=7642のトピックにて、
ajaxでのPOST送信についてアドバイスして頂き、なんとか実装することができました。

ですが、IEでのみ上手くPOST送信ができ、firefoxとchromeでは上手くいかず、データがヌルになってしまっている
ようです。
PHP側でどうデバッグしようか良い方法が思いつかなかったのですが、
とりあえず値をファイルに書き出して調べることにしたところ、IEのみ値が書き込まれ、firefoxとchromeは
nullでした。
当然掲示板にもIEのみ書き込みがされ、firefox,chromeはnullが書き込まれました。
javascriptのみ版とjquery版とを両方作ったのですが、どちらも結果は同じでした。

コードを載せておきます。
方法としては、送信したいデータをURLエンコードし、各name属性の名前と全部くっつけて一つのデータとし、
送信している感じです。
PHP側のコードは貼ってませんが、ただ$_POST['subject']などでアクセスして、データを取り出しているだけです。

firefoxとchromeだけ、何故nullになってしまうのか、
何か考えられる原因として、思い当たるものがあれば教えていただきたいです。
よろしくお願い致します。

コード:

function WriteDataSend(object){
	var name=document.getElementsByName("namae");
	var subject=document.getElementsByName("subject");
	var sentence=document.getElementsByName("sentence");
	
	var namestr=encodeURIComponent(name[0].getAttribute('value'));
	var subjectstr=encodeURIComponent(subject[0].getAttribute('value'));
	var sentencestr=encodeURIComponent(sentence[0].getAttribute('value'));
	
	//文字をURLエンコードしてname属性とくっつける。基本的に(name属性名=値)でよい。
	var alldata="namae="+namestr+"&subject="+subjectstr+"&sentence="+sentencestr;

	$.ajax({
		async : true,
		url : "write.php",
		data : alldata,
		type : "POST",
		contentType : "application/x-www-form-urlencoded; charset=utf-8",
		success : function(msg){
			$(msg).insertAfter(object).css("display","none").show(1000);
		}
	});
oui C'est la Vie♪

アバター
サウス
記事: 78
登録日時: 9年前
住所: 千葉
連絡を取る:

Re: ajaxでのPOST送信について

#2

投稿記事 by サウス » 8年前

ブラウザによって動作が異なるのであれば原因はPHPではなくJavascript側にあると思います。

encodeURIComponentというのは見た事ないのですが自作関数ですか?
IEのみしか動作が保障されていないと、firefoxとchromeではnullが返ってきてもおかしくないかもですね。

アバター
Ciel
記事: 252
登録日時: 9年前

Re: ajaxでのPOST送信について

#3

投稿記事 by Ciel » 8年前

サウスさん、ありがとうございます。

さっき丁度javascript側を調べてて、原因が分かりました。
最初のgetElementsByNameで対象のname属性のオブジェクトを取得してるんですが、
IE以外では取得できていなかったようです。

jqueryを使って取得し、今はどのブラウザでも動くようになりました。
ご迷惑をおかけしました。

解決はしたんですが、
firefoxとchromeでgetElementsByNameではうまく取得できなかったので、
何か別の方法があると思うのですが、他の方法でオブジェクトが取得できる方法があれば教えて下さい。

回答がなかったら諦めます。
oui C'est la Vie♪

アバター
サウス
記事: 78
登録日時: 9年前
住所: 千葉
連絡を取る:

Re: ajaxでのPOST送信について

#4

投稿記事 by サウス » 8年前

参考:http://semooh.jp/jquery/api/selectors/[attribute+value]/

var name=document.getElementsByName("namae");
だと
$("*[name=’namae’]").val()
で取得ですかね。

アバター
Ciel
記事: 252
登録日時: 9年前

Re: ajaxでのPOST送信について

#5

投稿記事 by Ciel » 8年前

サウスさん、すいません。

ちょっと書き方が悪かったようです。

今回はサウスさんが書いていただいたjQueryを使った方法で
既に対応済みなのですが、
jQueryを使わない、javascriptのみでの正しいオブジェクトの取得方法を知りたかったんです。
もちろん、firefoxとchromeに対応できる方法で。

どなたかご存知でしたら、回答お願いします><
oui C'est la Vie♪

返信

“PHPに可能性を無限大” へ戻る