Задать вопрос
aaadddminnn
@aaadddminnn
php it ubuntu debian

Как работать с этим json?

Всем привет. Вот пытаюсь отправить json на пхп
Вот код который отправляет данные
<p class="center">Имя в игре</p><span id="check_login"></span>
<form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()">    
<input type="text" name="login"  id="login" OnKeyUp="checkLogin(this.value)" class="input"/>
 <p class="center">Пароль в игре</p>
 <input type="text" name="pass" id="pass" class="input"/> 
 <span id="submit" onclick="pass_hash()"></span> 
</form>

                                <script type="text/javascript">
                                    function getXmlHttp() {
                                        var xmlhttp;
                                        try {
                                            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                                        } catch (e) {
                                            try {
                                                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                                            } catch (E) {
                                                xmlhttp = false;
                                            }
                                        }
                                        if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
                                            xmlhttp = new XMLHttpRequest();
                                        }
                                        return xmlhttp;
                                    }
                                    function checkLogin(login) {
                                        var xmlhttp = getXmlHttp();
                                        xmlhttp.open('POST', '/api/?alg=reg&action=save_validation', true);
                                        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                                        xmlhttp.send("login=" + encodeURIComponent(login));
                                        xmlhttp.onreadystatechange = function () {
                                            if (xmlhttp.readyState == 4) {
                                                if (xmlhttp.status == 200) {
                                                    if (xmlhttp.responseText) {
                                                        //если логин занят то блокируем кнопку и выдаём уведомление
                                                        document.getElementById("check_login").innerHTML = "<div class='message padd_top_10 padd_bot_10 red'><div><p>ВНИМАНИЕ! имя занято</p></div></div>";
                                                        document.getElementById("submit").innerHTML = '';

                                                    } else {
                                                        document.getElementById("check_login").innerHTML = "<div class='message padd_top_10 padd_bot_10 yellow'><div><p>Имя свободно</p></div></div>";
                                                        document.getElementById("submit").innerHTML = '<div class="button orange"><input type="submit" name="" id= "btt" value="Выбрать имя"></div>';
                                                    }
                                                }
                                            }
                                        };
                                    }
                                    
                
                                    
                                    
                                    
                                    
function pass_hash() {
var pass  = document.getElementById('pass').value;
var login = document.getElementById('login').value;
var pass  = hex_sha512(pass);
var save = {
  "login": login,
  "pass": pass
};
var msg = 'data='+JSON.stringify(save);
        $.ajax({
          type: 'POST',
          url: '/api/?alg=reg&action=save',
          data: msg,
        success: function(resp) {
       alert(resp);
    },
    error: function(resp) {
      alert('error');
    }

        });
        }
                                </script>


А вот собственно скрипт обработчик
$json = $_POST['data'];
var_dump(json_decode($json));


При отправке постоянно алерт возвращает
object(stdClass)#3 (2) {
Консоль говорит
06:47:41.706 ReferenceError: call is not defined1 reg.html:1:0

Что я делаю не так то?
  • Вопрос задан
  • 382 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
mlnkv
@mlnkv
JavaScript Developer
странный у вас говнокод получаеся, вначале кода вы используете устаревший способ для получения XMLHttpRequest() объекта ( new XMLHttpRequest() поддерживается ie8 и выше )
а потом вы используете jQuery в котором уже есть своя функция обертка для Ajax. И форматирование кода у вас никудышное, нельзя так делать

<p class="center">Имя в игре</p>

<span id="check_login"></span>

<form method="POST" id="formx">    
  <input type="text" name="login"  id="login" class="input"/>
  <p class="center">Пароль в игре</p>
  <input type="text" name="pass" id="pass" class="input"/> 
  <span id="submit"></span> 
</form>

<script>
  $(function() {
    $("#formx").on("submit", function(e) {
      e.preventDefault();
      /* реализация ф-ции call() */
    });
    $("input[name=login]").on("keyup", function() {
      checkLogin($(this).val());
    });
    $("#submit").on("click", pass_hash);
  })

  function checkLogin(login) {
    $.post('/api/?alg=reg&action=save_validation', { login: login }, function(response) {
      if (response) {
        $("#check_login").html("<div class='message padd_top_10 padd_bot_10 red'><div><p>ВНИМАНИЕ! имя занято</p></div></div>");
        $("#submit").html("");
      } else {
        $("#check_login").html("<div class='message padd_top_10 padd_bot_10 yellow'><div><p>Имя свободно</p></div></div>");
        $("#submit").html('<div class="button orange"><input type="submit" name="" id= "btt" value="Выбрать имя"></div>');
      }
    });
  }

  function pass_hash() {
    var data = {
      login: $("#login").val(),
      pass: hex_sha512($("#pass").val())
    };
    $.post('/api/?alg=reg&action=save', { data: data }, function(response) {
      alert(response);
    });
  }
</script>
Ответ написан
@tplus
<form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()">

onsubmit="call()">
ReferenceError: call is not defined1 reg.html:1:0

Функция call не определена
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы