0

AJAX と JQuery を使用してフォームを送信します。

serializedData = $form.serialize();

request = $.ajax({
    url: "processData.php",
    type: "post",
    data: serializedData
});

問題は、processData.php でデータを使用すると、テキストが urlencoded になることです。

cuando=Una+fecha+%C3%BAnica

php の urldecode() を使ってみましたが、うまくいきません。それはまだurlencodeされています..

$cuando = $_POST['cuando']; 
$cuando = urldecode($cuando);

なにか提案を?どうもありがとう!

4

3 に答える 3

1

再現できません..私はこれを作りました:

<?php
echo urldecode('Una+fecha+%C3%BAnica');

出力は次のとおりです。

Una fecha unica

私の唯一の推測は、あなたの質問では、あなたの出力が私の入力のままであることを意味しているということです。

于 2013-06-22T18:34:17.527 に答える
1

最初に、JQuery $.ajax 関数の contentType 属性を変更しようとしましたが、うまくいきませんでした:

  $.ajax({
    url: "insertar_datos.php",
    type: "post",
    contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
    data: serializedData

そのため、JQuery-ajax で UTF8 以外の文字セット エンコーディングを使用すると、いくつかの問題があることがわかりました。

http://forum.jquery.com/topic/serialize-problem-with-latin-1-iso-8859-1-and-solution

次に、php 関数 utf8_decode() を試してみました。

utf8_decode($_POST['cuando']);

そしてそれはうまくいきました。このリンクで見つけたのは、次のことです。

「utf8_decode は、UTF-8 でエンコードされた文字列を ISO-8859-1 に変換するだけです。より適切な名前は、utf8_to_iso88591 です。テキストが既に ISO-8859-1 でエンコードされている場合、この関数は必要ありません。 ISO-8859-1 を使用したくない場合は、この機能は必要ありません。」

したがって、誰かが iso-8859-1 を使用していて、ajax で投稿されたデータに問題がある場合。utf8_decode() で確実にデコードできます。投稿する前にすべてのデータをデコードする簡単な方法があるかもしれませんが、ご覧のとおり、私にはうまくいきませんでした。

誰かがより良い/より効率的な方法を知っていれば、喜んであなたの答えを選びます.

それが誰かを助けることを願って、

よろしく!

于 2013-06-24T21:15:44.440 に答える