2011-11-30 4 views
1

jquery의 ajax 요청을 통해 테스트를 보냅니다. 이 텍스트는 "& lt", "& gt", "& amp"과 같은 특수 문자를 포함하며 <>, 그리고 &을 나타냅니다.AJAX ("& lt", "& gt", "amp")를 통해 특수 문자 보내기

$.ajax({ 
type: "POST", 
url: "page.php", 
data: "content="+txt }); 

불행히도, 문자열은 잘 전달되지 않습니다. 시작 부분 만 전송되고 첫 번째 특수 문자에서 잘라냅니다. 나는 "blablabla & ltgrogrogro"를 보내는 경우

예를 들어, 서버는

내가 어떻게 고칠 수

"blablabla"을받을 수?

추 신 : 특수 문자는 실제로 ";"로 끝납니다. 그렇지 않으면 제대로 표시되지 않기 때문에 넣지 않았습니다.

답변

2

&는 데이터 쿼리에 또 다른 변수를 나타냅니다를 끈. 그래서, 당신은 그래서 같은 자바 스크립트 객체를 사용하여 보내야합니다 : 기술적으로

$.ajax({ 
    type: "POST", 
    url: "page.php", 
    data: { 
     "content": txt 
    } 
}); 
+1

그건 자바 스크립트 개체, [JSON 개체가 아닙니다] (http://benalman.com/news/2010/03/theres-no-suchthing-as-a-json/)입니다. – Quentin

+0

여전히 귀하의 page.php에 귀하의 데이터를 게시합니다. 따라서 $ _POST를 사용하여 액세스 할 수 있습니다. 그리고 감사합니다 @ 퀀틴. – jValdron

2

의도적으로 설계된 동작입니다. data에 문자열을 전달하면 쿼리 문자열과 같이 URL 인코딩 된 데이터로 처리됩니다. 이 형식에서 &은 새 매개 변수의 시작을 나타냅니다. 데이터의 앰퍼샌드는 URL 인코딩되어야합니다.

당신이 중 하나를 urlencode 데이터가 전송되기 전에해야 - PHP에서 오른쪽 기능 urlencode() 것 - 또는 jQuery를 자동으로 인코딩됩니다 배열을 전달합니다

data: {"content": txt } 
+1

를, 그것은 것입니다 응용 프로그램/x-www-form-urlencoded를 쿼리 문자열에서 데이터를 인코딩하는 표준 방법입니다 데이터, 그리고 GET 요청이 만들어지면 JSON에 의해 ​​쿼리 문자열로 처리됩니다. – Quentin

+0

@Quentin 사실, 데이터가 POST 될 것입니다. 감사합니다 –