Codeigniter에서 AJX 호출 문제를 해결하려면 도움을 요청해야합니다. 내 시스템에서 CSRF 보호 기능을 사용하고 있으며 일반적으로 AJAX/jQuery 호출에서도 제대로 작동합니다. 이제 다음 코드를 사용하는 데 문제가있어서 해결할 수 없습니다. 그냥 큰 골칫거리가 있습니다. 내가하려는 것은 체크 박스 상태가 변경 될 때마다 컨트롤러를 호출하는 것입니다. Switchery 사용); 스위치를 여러 번 올바르게 작동시키고 싶습니다. 단지 첫 번째 스위치가 아닙니다. CSRF의 해시에 전달되지 않습니다,CSRF 코드 서명자 보호 및 AJAX 호출
\t \t \t $(document).ready(function() {
\t \t \t var csrfName = '<?php echo $this->security->get_csrf_token_name(); ?>';
\t \t \t var csrfHash = '<?php echo $this->security->get_csrf_hash(); ?>';
\t \t \t var changeCheckbox = document.querySelector('.js-switch'), changeField = document.querySelector('#results');
\t \t \t changeCheckbox.onchange = function() {
\t \t \t \t changeField.innerHTML = changeCheckbox.checked;
\t \t \t $.ajax({
\t \t \t url: 'myphpfile',
\t \t \t type: 'POST',
\t \t \t data : {
\t \t \t csrfName: csrfHash,
\t \t \t "checked": changeCheckbox.checked
\t \t \t },
\t \t \t dataType: "json",
\t \t \t success: function(result){
\t \t \t $("#results").append(result.error);
\t \t \t csrfName = result.csrfHash;
\t \t \t }
\t \t \t });
\t \t \t };
\t \t \t });
스크립트는 위의 경우에도 첫 번째 시도에서 작동하지 않습니다와 나는 (금지)는 403 오류가 너무 : 자바 스크립트 코드는 다음과 같다 모든 .... .... 이것은 PHP 에코 코드를 사용하여 S.ajax 데이터 대괄호에 직접 csrf 이름과 csrf 해시를 설정하면 스크립트가 제대로 작동하기 때문에 정말 이상합니다. 질문은 다음과 같습니다. csrfName 및 csrfHash 변수가 데이터를 통해 전달되지 않는 이유는 무엇입니까? AJAX csrf가 여러 번 올바르게 작동하도록하려면 어떻게해야합니까? 다음
var data = {"checked": changeCheckbox.checked};
data[csrfName] = csrfHash;
과 :
$.ajax({
url: 'myphpfile',
type: 'POST',
data : data
[...]
csrfName
가 변수입니다 내 나쁜 영어, 희망 미안 도움이 아마
도움 document.querySelector'은 첫 번째 요소를 일치 반환'주의 것입니다 ... 모든이 – charlietfl
고마워 일치 피드백 및 의견을. Adam, yout 힌트는 문제를 해결했습니다. 이제 첫 번째 확인란 스위치에서 스크립트가 제대로 작동합니다. csrfName = result.csrfHash를 편집해야합니까? 성공 함수를 한 번 더 작동하도록 행? – Federico
그냥 제출 나는 PHP 스크립트로 JSON 코드 수익을 확인 ... 더 많은 정보를 추가하고 다음 POST에 대한 제대로 새로운 해시를 제공하는' csrfHash : "18911515b6521496f1dfcfa88bc5da6d" csrfName : "csrf_ats_name"' – Federico