$ _GET与AJAX的值(&)

时间:2013-05-14 17:48:56

标签: php html ajax

我有三个代码,第一个是html

<html>
<head>
<script type = "text/javascript" src = "AJAX.js"></script>
</head>

<body>
<form method = "GET" >
    <input type = "text" id ="a" ><br>
    <input type = "text" id = "b"><br>
    <input type = "button" value ="click"  onclick = "process()"><br>
    <textarea id = "underbutton" ></textarea><br>
</form>
<body>
</html>

现在javaScript(AJAX):

function process() {
    if(xmlHttp.readyState==0 || xmlHttp.readyState==4){

        a = document.getElementById("a").value;
                b = document.getElementById("b").value;
        xmlHttp.onreadystatechange = handleServerResponse;
        xmlHttp.open("GET","file.php?a="+a+"&b="+b,true);
        xmlHttp.send();
    }
}

function handleServerResponse (){
    if(xmlHttp.readyState==4 && xmlHttp.status==200)
        {

        response = xmlHttp.responseText;
        document.getElementById("underbutton").innerHTML =  response ;


        }

}

现在php文件:

<?php  

echo $_GET['a'].'<br>';
echo $_GET['b'].'<br>';

?>

一切正常但问题是当我输入第一个texbox(a)单词hello而第二个(b)代码&并点击按钮时;它必须打印出来hello& 但它会打印hello !!
只有hello没有&

我注意到我发送到php文件是这样的: file.php?a=hello&b=&
最后&必须为%26

所以打印&我必须发送: file.php?a=hello&b=%26

我该如何解决?

5 个答案:

答案 0 :(得分:3)

JavaScript中的更改:

- a = document.getElementById("a").value;
- b = document.getElementById("b").value;
+ a = encodeURIComponent(document.getElementById("a").value);
+ b = encodeURIComponent(document.getElementById("b").value);

答案 1 :(得分:3)

您必须对您的值进行网址编码:

xmlHttp.open("GET","file.php?a="+encodeURIComponent(a)+"&b="+encodeURIComponent(b),true);

您需要这样做,因为您的网址中的参数会在'&amp;'上拆分它就像它一样:

<强> A =你好 &安培; B = &安培; *(这里可能是第三个参数)*

答案 2 :(得分:1)

我认为使用jQuery.AJAX()将为您解决问题。

答案 3 :(得分:1)

使用encodeURIComponent()

xmlHttp.open("GET","file.php?a="+encodeURIComponent(a)+"&b="+encodeURIComponent(b),true);

答案 4 :(得分:0)

要在网址中对&符号进行编码,请使用&amp;。用它替换它会发生什么?