0

Javascriptの関数に問題が1つあります。にテキストを挿入するとtextarea、関数PHPはAJAXを使用してテキストをスクリプトに送信しますが、2つまたは3つの単語を挿入すると問題が発生します。たとえばBosnia and Herzegovina、スクリプトが機能しません。文字列置換を使用しました:

    function provjeraDrzave(rijec) {
        rijec = rijec.replace(" ", "%20");
        $.ajax({
            type: "GET",
            url: "/drzava.php?slovo=" + randomslovo + "&drzava=" + rijec,
            success: function (odgovor) {
                $('#rezultati').replaceWith($("<span id='rezultati'>" + odgovor + "</span>"));
            },
            error: function () {
                alert('Doslo je do pogreske');
            }
        });
    }

次のように機能するはずです。挿入すると、にBosnia and Herzegovina変更する必要がありますBosnia%20and%20Herzegovinaが、に変更するBosnia%20and Herzegovinaと機能しません。問題はどこだ ??

4

3 に答える 3

2

たとえば、encodeURIComponentこのために作られたネイティブ関数を使ってみませんか?

dataまたは、さらに良いことに、 config paramを使用して、jQueryにURLエンコードを任せます。

function provjeraDrzave(rijec) {
    $.ajax({
        type: "GET",
        data: {
            slovo: randomslovo,
            drzava: rijec
        },
        url: "/drzava.php",
        success: function (odgovor) {
            $('#rezultati').replaceWith($("<span id='rezultati'>" + odgovor + "</span>"));
        },
        error: function () {
            alert('Doslo je do pogreske');
        }
     });
}
于 2012-05-27T20:21:40.383 に答える
2

jQueryはプロパティを$.ajax介してurl引数を受け取ることができ、data自動的にシリアル化する必要があります。

データ

サーバーに送信されるデータ。まだ文字列でない場合は、クエリ文字列に変換されます。GETリクエストのURLに追加されます...オブジェクトはキー/値のペアである必要があります...

$.ajax({
    type: 'GET',
    url: '/drzava.php'
    data : {
        'slovo' : randomslovo,
        'drzava' : rijec          //no need  to replace
    }
    success: function (returndata) {...},
    error: function () {...}
});
于 2012-05-27T20:22:31.480 に答える
0

どうしてもこの方法でやりたい場合は、

rijec = rijec.replace(/\ /g, "%20");

しかし、encodeURIComponentより適切でしょう。

于 2012-05-27T20:25:23.420 に答える