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);
});
백 슬래시는 큰 따옴표를 이스케이프하는 데 사용됩니다. 간단한 교체가 아마 당신을 위해 일할 것입니다. – Th0rndike
@ Th0rndike 예, 알아요.하지만 어디서 추가되었는지 알 수 없습니다. 코드에 문제가 있음을 나타낼 수 있습니다. 그렇지 않습니까? 아니면 정상적인 행동입니까? – Keelan
수동으로 deserialize 할 필요가있는 FOTM 데이터가 아닌 JSON으로 전송하지 않으시겠습니까? – Phill