0

現在、サーブレットにajaxリクエストを送信していますが、途中で一部の情報が失われています。私が心配している(データを失う)パラメータは「コメント」パラメータです。以下に、私の最後の4行のajaxを示します。

var params = "name=" + name + "&email=" + email + "&comment=" + comment + "&player_id=" + player_id;    
xmlhttp.open("POST", 'comment', true);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send(params);

送信前と宣言後にパラメータにアラートを送信すると、次のようになります。

name=Chris&email=email@gmail.com&comment=Hey, check this song out on groovershark http://grooveshark.com/#!/s/Here+feat+Soulive/2YDJIw?src=5&player_id=4

ただし、サーブレットで、コメントパラメータを取得した直後に印刷行を実行すると、次の出力が得られます。

Hey, check this song out on groovershark http://grooveshark.com/#!/s/Here feat Soulive/2YDJIw?src=5

問題は、"+"ajaxからコンテナへのリクエストのどこかでマークが消えることです。理由はわかりません。私はそれをこの問題領域に最終的に絞り込みましたb/c私は実際には別のスタックオーバーフローメンバーの助けを借りてデータベース接続でずっとこれに気づきませんでした。ですから、キャラクターを取り戻すために私に何ができるかを誰かに教えてもらえれば、"+"本当にありがたいです!どうもありがとう!

4

2 に答える 2

1

次のように、パラメータを送信する前にエンコードする必要があります。

encodeURIComponent(params);
xmlhttp.send(params);
于 2012-10-17T07:25:57.837 に答える
0

URIのparams部分をパーセントエンコードする必要があります:http: //en.wikipedia.org/wiki/Percent-encoding#Types_of_URI_characters

このようにして、+は%2Bになり、サーバー側で正しく解釈できます。

encodeURIComponent()関数をチェックしてください:http ://www.w3schools.com/jsref/jsref_encodeuricomponent.asp

于 2012-10-17T07:20:38.293 に答える