2013-06-03 4 views
0

내 서버로 Ajax 호출을하고 배열을 보내야합니다. JSON을 사용하여 배열을 인코딩하고 있습니다. 즉, POST 요청을 사용하여 서버에 전송이 데이터 결과 :이 결과JSON을 POST 변수로 전달할 때 따옴표가 이스케이프됩니다.

echo urldecode($_REQUEST['selection']); 

: 서버에서

selection=%5B%221%22%5D 

을,이 코드가

[\"1\"] 

주를이 요청에 백 슬래시가 없습니다. 파이어 폭스의 개발 도구로 확인했다.

백 슬래시는 어디에 추가 되었습니까? 내가 여기서 뭔가 잘못하고있는거야? 이런 식으로 문자열을 디코딩 할 수 없습니다. 서버가 따옴표에 슬래시를 추가하도록 구성되어 있기 때문에

$.ajax({ 
    type: "POST", 
    url: "<my-uri>/rule/add.php", 
    data: { 
     selection: JSON.stringify(["1"]) // in reality this is a variable array 
    } 
}).done(function(data){ 
    alert(data); 
}); 
+0

백 슬래시는 큰 따옴표를 이스케이프하는 데 사용됩니다. 간단한 교체가 아마 당신을 위해 일할 것입니다. – Th0rndike

+0

@ Th0rndike 예, 알아요.하지만 어디서 추가되었는지 알 수 없습니다. 코드에 문제가 있음을 나타낼 수 있습니다. 그렇지 않습니까? 아니면 정상적인 행동입니까? – Keelan

+0

수동으로 deserialize 할 필요가있는 FOTM 데이터가 아닌 JSON으로 전송하지 않으시겠습니까? – Phill

답변

0

이 발생합니다

는 클라이언트 측 코드입니다.

이 문제를 피하려면 php.ini으로 가서 magic_quotes_gpc0으로 설정하십시오.

관련 문제