&(앰퍼샌드) 문자를 AJAX를 통해 전송하려면 어떻게 해야 합니까?
변수 몇 개와 스트링을 전송하고 싶습니다.POST메서드를 지정합니다.
데이터베이스에서 문자열을 가져와 PHP 페이지로 보냅니다.사용하고 있습니다.XMLHttpRequest물건.
문제는 문자열에 다음 문자가 포함되어 있다는 것입니다.&몇 번, 그리고$_POSTPHP의 어레이는 여러 개의 키처럼 인식합니다.
교환을 시도했습니다.&와 함께\&와 함께replace()작동은 하지만 아무 것도 안 하는 것 같아요
누구 도와줄 사람?
javascript 코드와 문자열은 다음과 같습니다.
var wysiwyg = dijit.byId("wysiwyg").get("value");
var wysiwyg_clean = wysiwyg.replace('&','\&');
var poststr = "act=save";
poststr+="&titlu="+frm.value.titlu;
poststr+="§iune="+frm.value.sectiune;
poststr+="&wysiwyg="+wysiwyg_clean;
poststr+="&id_text="+frm.value.id_text;
xmlhttp.open("POST","lista_ajax.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(poststr);
문자열은 다음과 같습니다.
<span class="style2">"Busola"</span>
URL에서 말 그대로 발생할 수 없는 모든 문자가 이스케이프됩니다.
var wysiwyg_clean = encodeURIComponent(wysiwyg);
이 예에서는 앰퍼샌드 문자가&이스케이프 시퀀스로 대체됩니다.%26URL에서 유효합니다.
encodeURIComponent(""Busola""); // => %26quot%3BBusola%26quot%3B
앰퍼샌드를 url-escape해야 합니다.용도:
var wysiwyg_clean = wysiwyg.replace('&', '%26');
Wolfram이 지적했듯이, 이것은 인코딩에 의해 (다른 모든 특수 문자와 함께) 잘 처리됩니다.URIC 컴포넌트
Ramil Amr의 답변은 & 캐릭터에만 적용됩니다.다른 특수 문자가 있는 경우 PHP를 사용해야 합니다.htmlspecialchars() 및 JS의encodeURIComponent().
다음과 같이 쓸 수 있습니다.
var wysiwyg_clean = encodeURIComponent(wysiwyg);
서버측에서는, 다음과 같이 합니다.
htmlspecialchars($_POST['wysiwyg']);
이것에 의해, AJAX는 기대대로 데이터를 전달해, PHP(데이터베이스에 데이터를 삽입하는 경우)는 데이터가 기대대로 동작하도록 합니다.
이 인코딩을 사용하여 인수를 전달할 수 있습니다.URIC 컴포넌트는 기능하기 때문에 특수 문자를 전달할 염려가 없습니다.
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana')
또는
var someValue = 'Dolce & Gabbana';
data: "param1=getAccNos¶m2="+encodeURIComponent(someValue)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
JavaScript 측에서 Base64 인코딩을 사용하여 문자열을 인코딩하고 서버 측에서 PHP(?)로 디코딩할 수 있습니다.
JavaScript (문서)
var wysiwyg_clean = window.btoa( wysiwyg );
PHP(문서):
var wysiwyg = base64_decode( $_POST['wysiwyg'] );
jQuery와 같은 JavaScript 라이브러리를 사용하여 데이터 옵션을 개체로 설정한 다음 다음과 같이 jQuery가 인코딩을 수행하도록 하는 것이 좋습니다.
$.ajax({
type: "POST",
url: "/link.json",
data: { value: poststr },
error: function(){ alert('some error occured'); }
});
jQuery(요즘 거의 표준)를 사용할 수 없는 경우 인코딩을 사용합니다.URIC 컴포넌트
encodeURIComponent(Your text here);
그러면 특수 문자가 잘립니다.
언급URL : https://stackoverflow.com/questions/11294107/how-can-i-send-the-ampersand-character-via-ajax
'programing' 카테고리의 다른 글
| Python에서 사전 키를 목록으로 반환하려면 어떻게 해야 하나요? (0) | 2023.04.10 |
|---|---|
| x: xaml의 의미 (0) | 2023.04.10 |
| URL을 통해 쿠폰 코드를 입수하여 WooCommerce Checkout 페이지에서 적용 (0) | 2023.04.05 |
| Wordpress 5.6.1 - Permissions-Policy Header 구현 (0) | 2023.04.05 |
| JQuery $.getJ에 매개 변수를 전달하는 방법SON 콜백 방식? (0) | 2023.04.05 |