0

我对 Javascript 中的函数有一个问题。当我在 中插入文本时textarea,函数PHP使用 AJAX 将文本发送到脚本,但是当我插入两个或三个单词时出现问题,例如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功能?

或者,更好的是,让 jQuery 使用data配置参数为您处理 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 回答