我正在使用Ajax POST方法发送数据,但我无法发送'+'(运营商到服务器,即如果我想发送1+或20k +它只会发送1或20k ..只需要消除'+') HTML代码就在这里..
<form method='post' onsubmit='return false;' action='#'>
<input type='input' name='salary' id='salary' />
<input type='submit' onclick='submitVal();' />
</form>
和javascript代码在这里,
function submitVal()
{
var sal=document.getElementById("salary").value;
alert(sal);
var request=getHttpRequest();
request.open('post','updateSal.php',false);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.send("sal="+sal);
if(request.readyState == 4)
{
alert("update");
}
}
function getHttpRequest()
{
var request=false;
if(window.XMLHttpRequest)
{
request=new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
try
{
request=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
request=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
request=false;
}
}
}
return request;
}
在函数submitVal()中它首先警告工资值(如果1+然后警告1+),但是当它被发布时它只是发布的值没有'+'运算符,这是必需的... 是查询字符串的任何问题,因为PHP后端代码工作正常......
答案 0 :(得分:3)
使用
request.send("sal="+encodeURIComponent(sal));
+被解释为服务器端的空间,因此您需要先对字符串进行编码。
更多信息:
答案 1 :(得分:1)
您需要在request.send中编码sal(“sal =”+ sal)。你可能会发现,如果sal等于“foo&amp; bar”,你最终会在服务器上只显示“foo”,因为&amp;也需要编码。所以:
request.send("sal=" + encodeURIComponent(sal)); // updated example
然而,你应该考虑使用库来为你做这些,而不是手动执行,例如jQuery,那么你的例子看起来像这样:
$.ajax({
url: "updateSal.php",
type: "POST",
data: { sal : $("salary").val() },
success: function(){
alert("update");
}
});