2010-06-01 3 views
1

Ajax POST 메서드를 사용하여 데이터를 보내고 있지만 '+'(서버에 연산자를 보낼 수 없습니다. 즉 1+ 또는 20k +를 보내려는 경우 1 또는 20k 만 보낼 것입니다.) ' + ')) 함수 submitVal에서AJAX 게시물을 통해 '+'를 보낼 수 없습니까?

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; 
      } 

( HTML 코드는

<form method='post' onsubmit='return false;' action='#'> 
    <input type='input' name='salary' id='salary' /> 
    <input type='submit' onclick='submitVal();' /> 
</form> 

.. 간다와 자바 스크립트 코드는 여기에가는 것이 첫 번째 경고의 그것 (그대로 급여 값 1+ 다음 경우 알리미 1 +),하지만 게시 할 때 '+'연산자없이 그냥 게시물의 값 ... PH로 쿼리 문자열에 어떤 문제가있다 P 백엔드 코드는 그래서 당신이 먼저 문자열을 인코딩해야

+0

이 질문은 이미 답변되었습니다 http://stackoverflow.com/questions/1373414/ajax-post-and-plus-sign-how-to-encode – Arib

답변

3

사용

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

의 +는 서버 측의 공간으로 해석됩니다 ... 잘 작동한다. 여기

상세 정보 :

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

+0

예! 그것은 작동합니다 + 공간으로 ... 감사합니다 Tatu Ulmanen –

1

당신은 request.send에서 SAL ("샐 ="+ SAL)을 인코딩 할 필요가있다. sal이 "foo & bar"와 같으면 &도 인코딩해야하므로 서버에서 "foo"로 끝납니다. 그래서 :

$.ajax({ 
    url: "updateSal.php", 
    type: "POST", 
    data: { sal : $("salary").val() }, 
    success: function(){ 
     alert("update"); 
    } 
}); 
: 오히려 모든 손으로이 일을보다

request.send("sal=" + encodeURIComponent(sal)); // updated example 

그러나, 당신은 당신을 위해 그것을 할 수있는 라이브러리와 같은 jQuery을 사용하는 방법에 대해 생각해야한다, 당신의 예는 다음과 같이 보일 것입니다

+1

'encodeURI()'는'~! @ # $ & *() = : /,;? + ''를 인코딩하지 않고'encodeURIComponent)'대신. –

+0

나는 또한 encodeuri 시도했지만 작동하지 않습니다 ... –

+0

건배 Tatu가 업데이 트되었습니다. – Douglas

관련 문제