Javascript 替换错误

Javascript replace error

本文关键字:错误 替换 Javascript      更新时间:2023-09-26

我在Javascript中有一个函数问题。当我在textarea中插入文本时,函数使用 AJAX 将文本发送到PHP脚本,但是当我插入两个或三个单词时我遇到了问题,例如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%20and%20Herzegovina但更改为Bosnia%20and Herzegovina并且不起作用的Bosnia and Herzegovina时。问题出在哪里?

例如,为什么不使用为此而生的本机encodeURIComponent函数?

或者,更好的是,让 jQuery 为您处理 URL 编码,使用 data 配置参数:

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');
        }
     });
}

jQuery $.ajax可以通过 data 属性接收 url 参数,并应自动为您序列化它。

数据

要发送到服务器的数据。如果还不是字符串,则会将其转换为查询字符串。它被附加到 GET 请求的 url 中...对象必须是键/值对...

$.ajax({
    type: 'GET',
    url: '/drzava.php'
    data : {
        'slovo' : randomslovo,
        'drzava' : rijec          //no need  to replace
    }
    success: function (returndata) {...},
    error: function () {...}
});

如果你绝对想这样做,试试

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

encodeURIComponent会更合适。