2

最初のコードは次の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>';

?>

すべてが機能していますが、問題は、最初のテックスボックス(a)に単語helloを入力し、2番目(b)にコードを入力&してボタンをクリックしたときです。印刷する必要がありますhello&
しかし、それは印刷されます hello!!
ジャストhelloなし&

私はphpファイルに送信していたことに気付きました: file.php?a=hello&b=&.
最後&でなければならない%26

したがって、印刷する&には : を送信する必要があります file.php?a=hello&b=%26

どうすれば修正できますか??

4

5 に答える 5

3

値を URL エンコードする必要があります。

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

URL のパラメーターが「&」で分割されているため、これが必要です。

a=hello & b= & *(ここに 3 番目のパラメーターを指定できます)*

于 2013-05-14T17:52:02.347 に答える
3

JavaScript の変更:

- a = document.getElementById("a").value;
- b = document.getElementById("b").value;
+ a = encodeURIComponent(document.getElementById("a").value);
+ b = encodeURIComponent(document.getElementById("b").value);
于 2013-05-14T17:51:45.853 に答える
1

jQuery.AJAX() を使用すると、問題が解決されると思います。

于 2013-05-14T17:51:49.493 に答える
1

encodeURIComponent() を使用する

xmlHttp.open("GET","file.php?a="+encodeURIComponent(a)+"&b="+encodeURIComponent(b),true);
于 2013-05-14T17:52:55.820 に答える
0

URL のアンパサンド (&) をエンコードするには、&amp;. それと交換したらどうなるの?

于 2013-05-14T17:52:30.607 に答える