값이 넘어 오질 않네요..ㅠㅠ

값이 넘어 오질 않네요..ㅠㅠ

QA

값이 넘어 오질 않네요..ㅠㅠ

본문

 <script src = "http://code.jquery.com/jquery-latest.min.js"></script>
 <script>
$(document).ready(function(){
    $(document).on("click", "button", function(){
        $.ajax({
            url: './bbb.php',
            type: 'post',
            data: { title: "테스트", gubun: "음식점"},
            dataType: "json",
            success: function(data){
                alert("변경되었습니다.");
            }, error: function(data){
                console.log(data);
            }
        });
    });
});
</script>
<button type="button">버튼</button>

 

bbb.php

 

<?php

include_once('./_common.php');

echo "제목".$_POST['title'];

echo "분류".$_POST['gubun'];

?>

 

제목과 구분 값이 넘어와야하는데 공백이네요.

어제 보안설정한다고 아파치 환경설정을

여러가지 수정했는데 그것때문인지 모르겠네요.

GET, POST는 허용했는데 왜 이러죠?

오후내내 이러고 있네요. 도와주세요.

감사합니다.

 

이 질문에 댓글 쓰기 :

답변 5

Ajax에 대한 이해가 필요할 것 같습니다.

아작스는 내가 필요한 데이터를 보내고 원하는 데이터를 받는 방식입니다.

 

위는 단순히 포스트 및 ajax로 데이터를 보내는거니

찍히는건 없습니다.

 

데이터를 볼 수 없죠

 

아래 처럼 변경해보세요

 


bbb.php
 
<?php
 
include_once('./_common.php');
 
header('Content-Type: application/json');
 
$response = array();
 
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = isset($_POST['title']) ? $_POST['title'] : '';
    $gubun = isset($_POST['gubun']) ? $_POST['gubun'] : '';
 
    $response['title'] = $title;
    $response['gubun'] = $gubun;
    $response['status'] = 'success';
} else {
    $response['status'] = 'error';
    $response['message'] = '잘못된 요청입니다.';
}
 
echo json_encode($response);
 
?>
 

 

 

그리고 스크립트를 수정해주세요

 


<script>
$(document).ready(function(){
    $(document).on("click", "button", function(){
        $.ajax({
            url: './bbb.php',
            type: 'post',
            data: { title: "테스트", gubun: "음식점" },
            dataType: "json",
            success: function(data){
                if (data.status === 'success') {
                    alert("제목: " + data.title + "\n분류: " + data.gubun + "\n변경되었습니다.");
                } else {
                    alert("Error: " + data.message);
                }
            },
            error: function(xhr, status, error){
                console.log(xhr.responseText);
            }
        });
    });
});
</script>

dataType: "json",

을 삭제하면 됩니다.

 

POST 로 값은 잘 넘어갔습니다.  


bbb.php 에서 리턴하는 데이터 타입이 'JSON' 타입이 아니었기 때문에,

success 가 호출되지 않은 것일 뿐입니다.

dataType 은 서버에서 응답받는 데이터의 타입을 뜻합니다. (bbb.php 에서 리턴하는 데이터의 타입)

 

- https://programmings.tistory.com/12

- https://blog.naver.com/thav/220874940014

- https://dotiweb.tistory.com/entry/Ajax-JSON-%ED%83%80%EC%9E%85%EC%9D%98-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-PHP-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%B4%EB%82%B4%EA%B8%B0

 url: './bbb.php', 주소가 문제 있을수도있구요 

ajax가 제대로 나오는지 400 에러 나온지 확인해보세요

500 에러면 소스코드 문제이구요 

미니님이 알려준 소스코드로 해보세요

 

ajax 받을 때 받을 데이터 형식을 Json(dataType: "json") 으로 하셔서

데이터를 전달하고 수신받을 파일(bbb.php)의 헤더에

json형식으로 반환한다는 것을 표시(header('Content-Type: application/json');)해주고

전달할 데이터 값도 Json 값으로 변환 함수(json_encode) 이용해서 반환해야 될 것 같아요.

 

아니면 dataType을 text나, 생략하시면 bbb.php파일은 수정 안해도 될 것 같아요 ㅎㅎ

답변을 작성하시기 전에 로그인 해주세요.
전체 150
QA 내용 검색
filter #json ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT