POST
JavaScript 의 메서드를 사용하여 몇 가지 변수와 문자열을 보내고 싶습니다 .
데이터베이스에서 문자열을 가져온 다음 PHP 페이지로 보냅니다. 나는 XMLHttpRequest
물체를 사용하고있다 .
문제는 문자열에 문자 &
가 몇 번 포함되어 있고 $_POST
PHP 의 배열이 여러 키처럼 인식한다는 것입니다.
나는 교체 시도 &
와 \&
과 replace()
기능,하지만 아무것도하지 않는 것.
누구든지 도울 수 있습니까?
자바 스크립트 코드와 문자열은 다음과 같습니다.
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>
답변
encodeURIComponent () 사용할 수 있습니다 .
URL에서 그대로 나타날 수없는 모든 문자를 이스케이프합니다.
var wysiwyg_clean = encodeURIComponent(wysiwyg);
이 예에서 앰퍼샌드 문자 &
는 %26
URL에서 유효한 이스케이프 시퀀스로 대체됩니다 .
답변
encodeURIComponent () 를 사용할 수 있습니다 .
encodeURIComponent(""Busola""); // => %26quot%3BBusola%26quot%3B
답변
앰퍼샌드를 URL 이스케이프해야합니다. 사용하다:
var wysiwyg_clean = wysiwyg.replace('&', '%26');
Wolfram이 지적했듯이 이것은 encodeURIComponent에 의해 (다른 모든 특수 문자와 함께) 멋지게 처리됩니다.
답변
Ramil Amr의 답변은 & 캐릭터에만 적용됩니다. 다른 특수 문자가있는 경우 PHP htmlspecialchars()
와 JS의 encodeURIComponent()
.
당신은 쓸 수 있습니다:
var wysiwyg_clean = encodeURIComponent(wysiwyg);
그리고 서버 측에서 :
htmlspecialchars($_POST['wysiwyg']);
이렇게하면 AJAX가 예상대로 데이터를 전달하고 PHP (데이터를 데이터베이스에 삽입하는 경우)가 데이터가 예상대로 작동하는지 확인합니다.
답변
이 encodeURIComponent 함수를 사용하여 인수를 전달할 수 있으므로 특수 문자 전달에 대해 걱정할 필요가 없습니다.
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
답변
답변
선호하는 방법은 jQuery와 같은 JavaScript 라이브러리를 사용하고 데이터 옵션을 객체로 설정 한 다음 jQuery가 다음과 같이 인코딩하도록하는 것입니다.
$.ajax({
type: "POST",
url: "/link.json",
data: { value: poststr },
error: function(){ alert('some error occured'); }
});
jQuery (요즘 거의 표준)를 사용할 수 없다면 encodeURIComponent를 사용 하세요.