alert 이나 echo 나 메시지 출력이 안되는 이유 문의
본문
위 슬롯머신을 사용하고있습니다.
동작은 다 잘되는데
메시지 출력이 안되는데 이유를 모르겠습니다.
slot.php 에서는 alert 이나 echo 나 메세지가 다 잘 출력이 되는데
//slot.php
// spin.php 호출 부분 464 line
getSpin = function() {
spin[0] = -1;
$.ajax({
url: "spin.php",
type: "get",
datatype: "json",
async: false,
success: function(data) {
spin[0] = JSON.parse(data)['slot1'];
spin[1] = JSON.parse(data)['slot2'];
spin[2] = JSON.parse(data)['slot3'];
},
complete: function(data) {},
error: function(xhr, status, error) {}
});
},
spin.php 여기에선 alert 이나 echo 나 메세지가 출력되질 않습니다.
//spin.php 시작부분
<?php
include_once('../../common.php');
define('cherry', 0);
define('orange', 1);
define('prune', 2);
define('bell', 3);
define('seven', 4);
define('bar1', 5);
define('bar2', 6);
define('bar3', 7);
define('anyBar', 8);
if($member['mb_point'] < 10000) {
alert('슬롯머신 배팅에 필요한 포인트가 없습니다.', '../../index.php');
}
메세지가 출력이 안되고 게임이 뻣어? 버리는 현상이 발생합니다.
어째서 메세지 출력이 안되는지 모르겠네요..
!-->!-->답변 6
* slot.php
//slot.php
// spin.php 호출 부분 464 line
getSpin = function() {
spin[0] = -1;
$.ajax({
url: "spin.php",
type: "get",
datatype: "json",
async: false,
success: function(data) {
error = JSON.parse(data)['error'];
if (error == 'no_point') {
alert('슬롯머신 배팅에 필요한 포인트가 없습니다.');
return false;
}
spin[0] = JSON.parse(data)['slot1'];
spin[1] = JSON.parse(data)['slot2'];
spin[2] = JSON.parse(data)['slot3'];
},
complete: function(data) {},
error: function(xhr, status, error) {}
});
},
* spin.php
<?php
include_once('../../common.php');
define('cherry', 0);
define('orange', 1);
define('prune', 2);
define('bell', 3);
define('seven', 4);
define('bar1', 5);
define('bar2', 6);
define('bar3', 7);
define('anyBar', 8);
if ($member['mb_point'] < 10000) {
die(json_encode(array('error'=>'no_point')));
}
!-->!-->
"exit;" 를 추가해줘야 합니다.
추가하지 않으면 하위 코드까지 모두 실행됩니다.
if($member['mb_point'] < 10000) {
// echo ('슬롯머신 배팅에 필요한 포인트가 없습니다.', '../../index.php');
echo json_encode( array( 'error'=>'error', 'msg'=>'슬롯머신 배팅에 필요한 포인트가 없습니다.' ) );
exit; // 추가되어야 함.
}
지난 질문에 있는 소스를 보면
<?php
...
if($member['mb_point'] < 10000) {
echo ('슬롯머신 배팅에 필요한 포인트가 없습니다.', '../../index.php');
}
...
echo '{"slot1":'.$spin[0].',"slot2":'.$spin[1].',"slot3":'.$spin[2].'}';
...
이렇게 되어 있습니다.
둘 다 json 형식으로 출력해야 합니다.
<?php
...
if($member['mb_point'] < 10000) {
//echo ('슬롯머신 배팅에 필요한 포인트가 없습니다.', '../../index.php');
echo json_encode( array(
'error=>'error', 'msg'=>'슬롯머신 배팅에 필요한 포인트가 없습니다.')
) );
}
...
echo '{ "error":"ok", "slot1":'.$spin[0].',"slot2":'.$spin[1].',"slot3":'.$spin[2].'}';
...
그리고
success: function(data) {
spin[0] = JSON.parse(data)['slot1'];
spin[1] = JSON.parse(data)['slot2'];
spin[2] = JSON.parse(data)['slot3'];
},
이 부분은
success: function(data) {
var tmp= JSON.parse(data);
if( tmp.error=='error') { alert( tmp.msg); }
else { /*기존대로 */ }
},
ajax에 json으로 하시니 echo alert 가 아니라 return 을 하시고 json 타입으로 리턴을 해주셔야 합니다.
배팅금액 -10을 -10000으로 수정하면 처음 할때는 무조건 빠지는게 10원빠지는걸로 보여지네요
다음 돌릴때는 정상적으로 10000 빠지는게 보이는데
한번이라도 먹으면 그다음은 또다시 빠지는게 보이는게 -10으로됨니다.
근데 빠지는거는 -10000 으로 빠지고요
맨처음 룰렛 돌릴때만 계속 -10 으로 보여져서 금액이 엄청 헤깔리네요
먹어도 +된게 정상적으로 표기 안되요
맨처음 배팅금액 수정하면 이렇네요