• ベストアンサー

スペースやキャリッジリターンが無視されてしまいます。

Ajaxで値をサーバに送信するときにPOSTではなく、 GETで送信しています。 ?data=データ 送信 みたいに?をつけて送信しています。 送信はできるのですが、 スペースやキャリッジリターンが無視されてしまいます。 『データ 送信\\r\\n』 ↓ 『データ送信』 オブジェクトで送信しても無視されてしまうので、 なにかいい方法はないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.2

formを送信するときはブラウザが自動でエンコードしますからね。 しかし、Ajaxで使用するXMLHttpRequestは自動でエンコードしてくれないため、 自分でエンコードする必要があります。 JavaScriptにはECMAScript準拠のURIエンコード用メソッドが用意されていますので、 それを利用することもできます。 例えば、 //「パラメータ名」と「パラメータ値」は実際に使用する値を入れてください var parameter = encodeURIComponent(「パラメータ名」); var paraValue = encodeURIComponent(「パラメータ値」); var data = "?" + parameter + "=" + paraValue; //XMLHttpRequestのオブジェクトをobjとします obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); obj.open("GET","/sample.cgi" + data); obj.send(null); こんな感じです。

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

URLエンコードしていますか? スペースや改行、その他記号や全角文字はエンコードする必要があります。 http://www.sea-bird.org/doc/Cygwin/urlenc.html prototype.jsを使っているなら http://www.openspc2.org/JavaScript/Ajax/ref/prototype.js/ver1.4/ref/Form/serialize/index.html

関連するQ&A