我有三个代码,第一个是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
。
我该如何解决?
答案 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)
要在网址中对&符号进行编码,请使用&
。用它替换它会发生什么?