값이 넘어 오질 않네요..ㅠㅠ
본문
<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
url: './bbb.php', 주소가 문제 있을수도있구요
ajax가 제대로 나오는지 400 에러 나온지 확인해보세요
500 에러면 소스코드 문제이구요
미니님이 알려준 소스코드로 해보세요
값이제대로 넘어오는지 확인할려면
var_dump($_POST); 로 넘어온값이어떻게생겼는지 확인하시면 도움이 되실겁니다.
ajax 받을 때 받을 데이터 형식을 Json(dataType: "json") 으로 하셔서
데이터를 전달하고 수신받을 파일(bbb.php)의 헤더에
json형식으로 반환한다는 것을 표시(header('Content-Type: application/json');)해주고
전달할 데이터 값도 Json 값으로 변환 함수(json_encode) 이용해서 반환해야 될 것 같아요.
아니면 dataType을 text나, 생략하시면 bbb.php파일은 수정 안해도 될 것 같아요 ㅎㅎ