2012-07-10 3 views
3

Ajax를 통해 양식을 게시 할 때 여기에 문제가 있습니다. 나는 그것의 앞에서 Â로 저장합니다 ® 또는 © 같은 특수 문자 데이터를 전송할 때ajax를 사용하여 양식을 제출하면 Charset에서 이상한 동작이 발생합니다.

<script type="text/javascript" language="javascript" charset="utf-8"> 
    $(document).ready(function(){ 
     $("#newdata").submit(function(event) {   
     event.preventDefault();   
     $.post("save.asp", $("#newdata").serialize() , 
      function(data) { 
     });   
     }); 
    }); 
    </script> 

문제는 다음과 같습니다

여기 내 jQuery 코드입니다. 하지만 jQuery/Ajax없이 제출하면이 Â 문자로 데이터를 형식화하지 않습니다. 아무도 왜 내가이 문제를 겪고 있는지 알 수 있습니까?

+0

나는 문자 인코딩과의 문제를 생각합니다. 또는 ' 또는 ' –

+0

기본적으로 JQuery는이를 UTF-8을 사용하여 서버에 보냅니다. 문제는 데이터가'serialize' 메소드를 사용하여 인코딩되고 서버 측에서 디코딩되지 않는다는 것입니다. – marteljn

답변

1

http://jsfiddle.net/aTS67/2/

문제는 .serialize() 방법이다 (이 문제가 정말로, 그것은이 작업을 수행해야합니다). 위의 데모에서 볼 수 있듯이이 메서드를 사용할 때 특수 문자를 인코딩합니다 (꼭 그래야 함). 다음 두 가지 옵션이 있습니다.

  1. 서버 쪽에서 URL 인코딩 된 문자열을 디코딩합니다. 당신은 당신이 사용하고있는 기술은 언급하지 않았지만 아마도 당신을 위해 이것을 할 수있는 기능 일 것입니다. 예를 들어 PHP의 경우 htmlspecialchars_decode("YOUR ENCODED STRING");을 사용할 수 있지만 모든 서버 측 언어 (가장 좋은 옵션)와 유사한 것이 있습니다

  2. .serialize() 대신 서버 측에 전송 된 문자열을 수동으로 작성할 수 있습니다. 당신은 키 값 쌍 객체 리터럴로 $("#newdata").serialize()를 대체 할 수

{"InputId1" : $("#InputId1").val(), "InputId2" : $("#InputId2").val()}

편집

은 그냥 파일의 확장자는 고전적인 ASP를 사용되도록 ASP입니다 보았다. 어떤 구문을 디코딩해야할지 모르겠지만 쉽게 찾을 수 있습니다.

+0

당신의 솔루션은 정확 합니다만, 제 대답에 왜 이런 일이 일어나고 있는지 구체적인 정보를 제공했습니다. 적절한 코드 페이지가 있어야합니다. –

0

다른 사람이이 문제를 가지고있는 경우를 대비하여 해상도는 수신 페이지 상단에 <%@codepage=65001%>이어야합니다. jquery.serialize()는 utf8을 사용하여 직렬화하며 기본적으로 수신 페이지를 올바른 코드 페이지에 넣습니다.

참고 : 이것은 고전 ASP 용입니다.

자료 : http://api.jquery.com/serialize/

관련 문제