0

私は次のjqueryを持っています:

var msg = $("#newmessage").val();
var user = $("#userchat").val();

var filename = "/inc/chat.php?msg="+msg+"&user="+user; 
alert(filename);
$("#chatData").load(filename);

「msg」にスペースが含まれていない場合、#chatData は問題なく読み込まれ、変数がポストされます。

スペースが含まれている場合は、空白の div が表示されます。そこには何の情報もありません。

データを DB に挿入する php ファイルをロードし、同じ GET データを手動で入力すると、正常に動作します。

どうしたの?

4

5 に答える 5

2

次の点も考慮してください。

$("#chatData").load('/inc/chat.php', 
    { 'msg' : $("#newmessage").val(), 'user' : $("#userchat").val() }
);

URI エンコーディングは、必要に応じて jQuery によって行われます。

データはオブジェクト(ソース)として提供されるため、POST メソッドを使用するため、URI エンコーディングについて心配する必要はありません。

この場合、POST はとにかく GET よりも優れている可能性があります。

$_GETphp ファイルで を使用していた場合は、 または のいずれ$_REQUESTかを使用する必要があります$_POST

于 2012-08-01T14:36:21.960 に答える
2

使ってみて

encodeURIComponent(msg)
于 2012-08-01T14:33:05.787 に答える
0

encodeURIComponent()を使用して送信する前にメッセージをエンコードし、 urldecode()を使用してサーバーサイトでデコードする必要があります。

これを行うと、URLで許可されていない特殊文字、またはそうでなければクエリ文字列を壊す特殊文字をエスケープ/エンコードします(そう&でなければ新しい引数を開始するメッセージの a のように)。

于 2012-08-01T14:34:24.223 に答える
0

escapeencodeURIまたはのいずれかを使用できますがencodeURIComponent、最近のほとんどのブラウザは後者をサポートしていますが、すべてのescapeブラウザでサポートされている唯一の方法です。

参照

3 つすべてをうまく説明しているこのドキュメントを見てください。

于 2012-08-01T14:34:26.377 に答える
0

スペースが問題を引き起こしている可能性があります - JavaScript を試してくださいencodeURIComponent():

var msg = encodeURIComponent($("#newmessage").val());
var user = encodeURIComponent($("#userchat").val());
于 2012-08-01T14:35:19.090 に答える