2010-07-29 2 views
1

jquery.ajax를 사용하여 서식있는 텍스트 영역을 저장합니다.ajax로 html 텍스트를 보내고 '&'에 문제가 있습니까?

corr=some.innerHTML(); /* corr='< some text <' */ 
$.ajax({ 
    type:"POST", url:"flatplan/save_corr.php", 
    data:"corr="+corr+"&IDFS="+IDFILES, 
    success: function(msg){ 

    }, 
    error:function(x,e){ 
     ajax_errors(x,e); 
    } 
}); 

문제는 CORR 변수가 내부 '&'의 문자를 포함 할 수 있으며, 더 PARAMS에게 주는 문제를 보낼 것입니다. 아약스 html 텍스트를 게시 할 수있는 방법이 있습니까?

답변

5

쿼리 문자열 구성 요소 with encodeURIComponent을 이스케이프 처리해야합니다.

data: "corr=" + encodeURIComponent(corr) + "&IDFS=" + encodeURIComponent(IDFILES), 

편집 : jQuery는 데이터 필드에서 Object를 허용 할 수 있습니다.

data: ({ 
    corr: corr, 
    IDFS: IDFILES 
}), 

을 사용해야 jQuery에서 자동으로 쿼리 문자열을 인코딩 할 수 있습니다.

+0

동의합니다. 데이터를 jquery 객체로 보내는 것이 훨씬 좋은 방법입니다. '쿼리 문자열로 데이터'구문은 제 생각에 정말 끔찍한 것이고 다른 문제가있는 것 같습니다. – JAL

+0

+1 데이터를 Object로 전송합니다. – Bakhtiyor

0

나는 개인적으로 AJAX를 통해 게시하기 전에 들어가는 모든 html을 이스케이프 처리 할 것이고 처리하기 전에 PHP에서 결과를 확인하거나 이스케이프 처리 할 수 ​​있습니다. 나는 이걸로 잡히지 않았지만 그것이 문제가 될지도 모른다.

1

corr 값에는 &을 포함 할 수 없습니다. 그럴 경우 해당 값을 urlencode해야합니다. 이렇게하려면 escape() 메서드를 사용하십시오.

var corr = escape(some.innerHTML()); //(corr='< some text <') 
$.ajax({ 
    type:"POST", 
    url:"flatplan/save_corr.php", 
    data:"corr="+corr+"&IDFS="+IDFILES, 
    success: function(msg){ 
     //success handler 
    }, 
    error:function(x,e){ 
     ajax_errors(x,e); 
    } 
}); 
관련 문제