成功報酬 230ポイント


Ajax と PHP

<form action="mail.php" method="post">
<input type="hidden" name="from" value="index.php">
<input type="text" name="name">
<input type="text" name="email">
<text area name="messeage"></textare>
<input type="submit" value="Send">
</form>
<div id="message"></div>

というフォームがあります。これをPrototypeを使用し、sendが押されると各情報が mail.php にPOSTで送られます。受信が完了するとmail.phpは ご意見ありがとうございました。 という値をリターンし、<div id="message"></div> 内にメッセージを表示させるようにするにはどうすればいいのでしょうか?

PHP側ではなくAjax側をお願いします。成功した場合には少ないですが230ポイントをお支払いします。

注意:通常、AjaxでPOST形式でデータを送信する際 & を含むとそれ以後の文字が送信されなくなります。それを回避したものをお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/04/16 09:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:llusall No.1

回答回数505ベストアンサー獲得回数61

ポイント27pt

エンコードが必要かと思います。

以下、参考になりますでしょうか?


JavaScript++かも日記

【Ajax】自家製エンコード関数

JSON/PHPでGET,POST(by my encode)

id:esecua

なるほど。この関数は知りませんでした。参考になります。12ポイント~

2007/04/09 11:31:30
id:jippu No.2

回答回数61ベストアンサー獲得回数4

ポイント27pt

prototype.jsでしたら、Ajax.Requestというのがこれにピッタリかもしれません。

参考

簡単ですが作ってみました

http://jippu.net/ajax/question/1176079627.html

これでいかがでしょう?

余談ですが、textarea周りに記述ミスとかがありましたよ。(大丈夫だとは思いますが)

id:esecua

ありがとうございます。

ん~ちょっと試してみたのですが、Firefoxでは動きませんね。最低でもIE6,7 Firefox、Safarなどの主要ブラウザで動けるタイプがいいです。

25ポイント~

2007/04/09 14:04:54
id:jippu No.3

回答回数61ベストアンサー獲得回数4

ポイント26pt

2の回答者です。Firefoxでも動くように修正しましたよ。

(できればこれくらいはご自身でやって頂きたかった)

id:esecua

ありがとうございます。一度検討してみます。

>できればこれくらいはご自身でやって頂きたかった

すいません。なるべく自力でやりたいのですが、JSは始めたばかりなもので。。。

ただ、&を含んでしまうと送信されないみたいです。

25ポイント~

2007/04/15 10:01:28
id:jippu No.4

回答回数61ベストアンサー獲得回数4

ポイント10pt

>ただ、&を含んでしまうと送信されないみたいです。

これはパラメータをencodeURIComponent()してあげて下さい。&もエンコードされるはずです。

PHP側ではたぶん特に何もしなくても&になるのではないでしょうか。

サンプルのPHP側で受け取ったパラメータも表示するようにしています。試してみてください。

http://jippu.net/ajax/question/1176079627.html

  • id:llusall
    あっ。決してJSONを勧めているのではなく、エンコードを勧めています。(念のため)
    通常、encodeURIComponent あたりでエンコードするのかと思われますが、
    エンコードされない文字を「自作」という形で関数化しているようです。
    (探せば他にもエンコードの関数が出てくるかと思います)
    それとも「エンコード」は「はずれ」だったですかねw
  • id:esecua
    ん~質問してか成り立ちましたが、&なども送信できるタイプが出ていませんね。こうなるとお約束の230ポイントはお支払いできないのですが。
  • id:llusall
    私の言っている「エンコード」という方向性が間違っていなれば、
    「&」はエスケープされるので送信できるはずです。
    1つ1つのパラメータに対してエンコードを掛けて渡してあげるのです。
    &パラメタ名1=エンコードした文字列&パラメタ名2=エンコードした文字列・・・
    みたいな。
  • id:esecua
    jippuさん、回答を開くのが遅くなってすいませんでした。希望していたものでしたので、お約束のポイントを支払います。現在合計で63ポイント支払われていると思いますので、残りの167ポイントを送信します。ありがとうございました。

    llusallさん、貴重な情報ありがとうございました。
  • id:jippu
    ポイントありがとうございました。
    最初の方がエンコードについて正解を書かれていたので自分の中でスルーしてしまっていて、結果的に小出しみたいになってしまいすみませんでした。。
    がんばってください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません