无法通过AJAX发送'+'帖子?

时间:2010-06-01 08:16:14

标签: ajax post

我正在使用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后端代码工作正常......

2 个答案:

答案 0 :(得分:3)

使用

request.send("sal="+encodeURIComponent(sal));

+被解释为服务器端的空间,因此您需要先对字符串进行编码。

更多信息:

  
    

http://xkr.us/articles/javascript/encode-compare/

  

答案 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");
   }
});