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

 alert 이나 echo 나 메시지 출력이 안되는 이유 문의 채택완료

타버린나무 3년 전 조회 11,657

https://sir.kr/g5_plugin/9824

 

위 슬롯머신을 사용하고있습니다.

동작은 다 잘되는데

 

메시지 출력이 안되는데 이유를 모르겠습니다.

slot.php 에서는  alert 이나 echo 나 메세지가 다 잘 출력이 되는데

 

</p>

<p>//slot.php</p>

<p>// spin.php 호출 부분 464 line</p>

<p>      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) {}

        });    

      },</p>

<p>

 

spin.php  여기에선 alert 이나 echo 나 메세지가 출력되질 않습니다.

 

</p>

<p>//spin.php 시작부분</p>

<p> </p>

<p><?php

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

<p>  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);</p>

<p>  if($member['mb_point'] < 10000) {

    alert('슬롯머신 배팅에 필요한 포인트가 없습니다.', '../../index.php');

  }

 

메세지가 출력이 안되고 게임이 뻣어? 버리는 현상이 발생합니다.

어째서 메세지 출력이 안되는지 모르겠네요.. 

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

답변 6개

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

* slot.php

</p>

<p>//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) {}

        });    

      },</p>

<p>

 

* spin.php

</p>

<p><?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'))); 

  }

 </p>

<p>

 

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

답변에 대한 댓글 1개

타버린나무
3년 전
정말 감사합니다. 잘 동작하네요

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

배팅금액 -10을 -10000으로  수정하면 처음 할때는 무조건 빠지는게 10원빠지는걸로 보여지네요

다음 돌릴때는 정상적으로 10000 빠지는게 보이는데

한번이라도 먹으면 그다음은 또다시 빠지는게 보이는게 -10으로됨니다.

근데 빠지는거는 -10000 으로 빠지고요

 

맨처음 룰렛 돌릴때만 계속 -10 으로 보여져서 금액이 엄청 헤깔리네요

 

먹어도 +된게 정상적으로 표기 안되요

 

맨처음 배팅금액 수정하면 이렇네요

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

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

루미집사

"exit;" 를 추가해줘야 합니다.
추가하지 않으면 하위 코드까지 모두 실행됩니다.

 

if($member['mb_point'] < 10000) {
     //   echo ('슬롯머신 배팅에 필요한 포인트가 없습니다.', '../../index.php');
     echo json_encode( array( 'error'=>'error', 'msg'=>'슬롯머신 배팅에 필요한 포인트가 없습니다.' ) );
     exit;  // 추가되어야 함.
}

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

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

3년 전

ajax에 json으로 하시니 echo alert 가 아니라 return 을 하시고 json 타입으로 리턴을 해주셔야 합니다.

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

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

지난 질문에 있는 소스를 보면

<?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 {  /*기존대로 */ }
          },
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

타버린나무
3년 전
말씀하신데로 했는데 메세지 표시가 안됩니다.

spin.php
[code]
<?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) {
// echo ('슬롯머신 배팅에 필요한 포인트가 없습니다.', '../../index.php');
echo json_encode( array( 'error'=>'error', 'msg'=>'슬롯머신 배팅에 필요한 포인트가 없습니다.' ) );
}


insert_point($member['mb_id'], -10, 'Vegas플레이 비용');

$profits = array(
array(10, 30, 120), // cherry
array(0, 0, 100), // orange
array(0, 0, 200), // prune
array(0, 0, 500), // bell
array(0, 0, 5000), // seven
array(0, 0, 300), // bar1
array(0, 0, 1000), // bar2
array(0, 0, 2000), // bar3
array(0, 0, 80) // anybar
);

$slotName = array(
'?',
'?',
'?',
'?',
'?',
'1️',
'2️',
'3️',
);

$slots = array(
array(
cherry, orange, cherry, bar2, prune, bar1, bell, orange,
cherry, orange, bar3, prune, cherry, bell, bar1, orange,
cherry, seven, prune, orange, cherry
),
array(
orange, cherry, bar1, prune, orange, bar2, bell, cherry,
bar3, orange, bar1, prune, cherry, orange, bell, bar2,
seven, cherry, bar1, prune, orange, cherry
),
array(
orange, cherry, bar1, bell, bar3, prune, orange, bar2,
cherry, prune, bell, seven, bar1, bar3, orange, bar2,
cherry, bell, prune, bar1, orange
)
);

$maxSpin = array(20, 21, 20);
$spin = array();
$spin[0] = rand(0, $maxSpin[0]);
$spin[1] = rand(0, $maxSpin[1]);
$spin[2] = rand(0, $maxSpin[2]);

$matchCount = 0;
$matched = $slots[0][$spin[0]];

if($matched == $slots[1][$spin[1]]) {
$matchCount++;
} else if(($matched > seven) && ($slots[1][$spin[1]] > seven)) {
$matched = anyBar;
$matchCount++;
}

if($matched == $slots[2][$spin[2]]) {
if($matchCount > 0) $matchCount++;
} else if(($matched > seven) && ($slots[2][$spin[2]] > seven)) {
if($matchCount > 0) {
$matched = anyBar;
$matchCount++;
}
}

if($profits[$matched][$matchCount] != 0) {
insert_point($member['mb_id'], $profits[$matched][$matchCount], G5_TIME_YMD.' Vegas플레이 수익 ['.$slotName [$slots[0][$spin[0]]].$slotName [$slots[1][$spin[1]]].$slotName [$slots[2][$spin[2]]].']');
}

echo '{"error":"ok", "slot1":'.$spin[0].',"slot2":'.$spin[1].',"slot3":'.$spin[2].'}';

$sql =" UPDATE counter SET cnt_1 =cnt_1+1, cnt_datetime = now() WHERE cnt_pg_name = 'vegas_play' AND DATE(cnt_datetime) = DATE(NOW()) AND cnt_id = '$member[mb_id]' ";
$result = sql_query($sql);
[/code]

slot.php
[code]
getSpin = function() {
spin[0] = -1;
$.ajax({
url: "spin.php",
type: "get",
datatype: "json",
async: false,
success: function(data) {
var tmp= JSON.parse(data);
if( tmp.error=='error') { alert( tmp.msg); }
else {
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) {}
});
},

[/code]

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

https://sir.kr/qa/456050#answer_456051

에서 말씀드렸듯이

json에 대해서 공부를 하셔야 합니다.

 

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

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

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

로그인