테스트 사이트 - 개발 중인 베타 버전입니다

값이 넘어 오질 않네요..ㅠㅠ 채택완료

컴대장 1년 전 조회 8,058

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

채택된 답변
+20 포인트
1년 전

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

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

 

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

찍히는건 없습니다.

 

데이터를 볼 수 없죠

 

아래 처럼 변경해보세요

 

</p>

<p>bbb.php</p>

<p> </p>

<p><?php</p>

<p> </p>

<p>include_once('./_common.php');</p>

<p> </p>

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

<p> </p>

<p>$response = array();</p>

<p> </p>

<p>if ($_SERVER['REQUEST_METHOD'] === 'POST') {</p>

<p>    $title = isset($_POST['title']) ? $_POST['title'] : '';</p>

<p>    $gubun = isset($_POST['gubun']) ? $_POST['gubun'] : '';</p>

<p> </p>

<p>    $response['title'] = $title;</p>

<p>    $response['gubun'] = $gubun;</p>

<p>    $response['status'] = 'success';</p>

<p>} else {</p>

<p>    $response['status'] = 'error';</p>

<p>    $response['message'] = '잘못된 요청입니다.';</p>

<p>}</p>

<p> </p>

<p>echo json_encode($response);</p>

<p> </p>

<p>?></p>

<p> </p>

<p>

 

 

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

 

</p>

<p><script></p>

<p>$(document).ready(function(){</p>

<p>    $(document).on("click", "button", function(){</p>

<p>        $.ajax({</p>

<p>            url: './bbb.php',</p>

<p>            type: 'post',</p>

<p>            data: { title: "테스트", gubun: "음식점" },</p>

<p>            dataType: "json",</p>

<p>            success: function(data){</p>

<p>                if (data.status === 'success') {</p>

<p>                    alert("제목: " + data.title + "\n분류: " + data.gubun + "\n변경되었습니다.");</p>

<p>                } else {</p>

<p>                    alert("Error: " + data.message);</p>

<p>                }</p>

<p>            },</p>

<p>            error: function(xhr, status, error){</p>

<p>                console.log(xhr.responseText);</p>

<p>            }</p>

<p>        });</p>

<p>    });</p>

<p>});</p>

<p></script></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

컴대장
1년 전
header('Content-Type: application/json');

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

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

1년 전

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

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

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

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

 

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

로그인 후 평가할 수 있습니다

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

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

 

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

 

로그인 후 평가할 수 있습니다

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

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

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

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

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

컴대장
1년 전
파일 경로는 문제가 없었습니다.
header('Content-Type: application/json');
상단에 이 줄을 추가해 주니 잘됩니다.
고맙습니다.

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

1년 전

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개

컴대장
1년 전
header('Content-Type: application/json');

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

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

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

로그인