programing

&(앰퍼샌드) 문자를 AJAX를 통해 전송하려면 어떻게 해야 합니까?

newnotes 2023. 4. 5. 22:14
반응형

&(앰퍼샌드) 문자를 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+="&sectiune="+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">&quot;Busola&quot;</span>

인코딩을 사용할 수 있습니다.URIC 컴포넌트().

URL에서 말 그대로 발생할 수 없는 모든 문자가 이스케이프됩니다.

var wysiwyg_clean = encodeURIComponent(wysiwyg);

이 예에서는 앰퍼샌드 문자가&이스케이프 시퀀스로 대체됩니다.%26URL에서 유효합니다.

인코딩을 사용할 수 있습니다.URIC 컴포넌트().

encodeURIComponent("&quot;Busola&quot;"); // => %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&param2="+encodeURIComponent('Dolce & Gabbana') 

또는

var someValue = 'Dolce & Gabbana';
data: "param1=getAccNos&param2="+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

반응형