채택완료

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

2024-05-23 (목) 20:05:57 8,643

 <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개 / 댓글 3개

채택된 답변
+20 포인트
2024-05-23 (목) 20:18:14

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

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

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

찍히는건 없습니다.

데이터를 볼 수 없죠

아래 처럼 변경해보세요

Copy
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);

 

?>

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

Copy
<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>

답변에 대한 댓글 1개

header('Content-Type: application/json');

이 줄이 반드시 포함되어야 하나요?
추가하니 잘 나오네요...감사합니다.
좋은 밤되세요.~

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

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

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

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

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

2024-05-23 (목) 22:05:19

값이제대로 넘어오는지 확인할려면

var_dump($_POST); 로 넘어온값이어떻게생겼는지 확인하시면 도움이 되실겁니다.

2024-05-23 (목) 20:31:11

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

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

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

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

답변에 대한 댓글 1개

파일 경로는 문제가 없었습니다.
header('Content-Type: application/json');
상단에 이 줄을 추가해 주니 잘됩니다.
고맙습니다.
2024-05-23 (목) 20:30:54

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

답변에 대한 댓글 1개

header('Content-Type: application/json');

제거하는 방법도 맞는듯 하구요.
상단에 한줄 추가해 주니 잘 나오네요.ㅠ
감사합니다.

답변을 작성하려면 로그인이 필요합니다.