参数'&'打破AJAX呼叫

时间:2014-01-14 15:32:34

标签: javascript ajax

虽然这几乎是这个问题的重复:Parameter with '&' breaking $.ajax request,那里给出的答案并不能帮助我解决问题。原因是,问题和答案都是jQuery(我不明白)。

我需要发送一个带有字符串参数的Ajax调用,该参数有时包含'&'比如“RGR Kabel GmbH& Co. KG”。

例如,我有这个AJAX函数(简化):

function getData()
{
    var param = "RGR Kabel GmbH & Co. KG";
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState === 4 && xmlhttp.status === 200)
        {
        [... do something]
        }
    };
    xmlhttp.open("GET", "../getData.php?q1="+param, true);
    xmlhttp.send();
}

'&'在param变量中打破了AJAX调用。而不是一个参数:

q1 : "RGR Kabel GmbH & Co. KG"

有两个参数:

q1 : "RGR Kabel GmbH "
Co. KG : 

使用'&'时是否有可能阻止AJAX调用中断参数内部?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:7)

由于&用于在URI中分隔查询字符串参数,因此如果要发送包含该字符的数据,则必须在将所有数据添加到URI之前对其进行编码。您可以使用encodeURIComponent()来实现此目的。

在你的情况下像这样:

xmlhttp.open("GET", "../getData.php?q1="+encodeURIComponent(param), true);