Как сделать PHP звонок Ajax - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть форма и два модала в HTML, в PHP Я сделал функцию, чтобы проверить, существует ли домен, и, наконец, в AJAX, у меня есть небольшая функция в .done, но проблема есть. Я хочу, чтобы, если PHP вернул 1, javascript покажет пользователю значение «AvailableModal», а если он вернет 0, покажет «UnavailableModal». Но PHP возвращает только 1 или 0, а javascript ничего не делает.

HTML:

 <form action="" method="POST">
    <input type="text" class="p-3 form-control form-control-lg mb-2 mr-sm-2 input-ro www" id="inlineFormInputName2" name="www." value="www." placeholder="www." readonly>

    <div class="input-group justify-content-center mb-2 mr-sm-2">
        <input type="text" name="domain" id="domain" class="input-dom form-control form-control-lg">
    </div>

    <div class="form-check mb-2 mr-sm-2 select-padding">
        <select name="point" id="point">
            <option value=".com">.com</option>
            <option value=".com.br">.com.br</option>
            <option value=".net">.net</option>
        </select>
    </div>
    <button type="submit" id="salvar-form" class="btn btn-dominio btn-outline-danger" name="send" value="Send">
    </button>
    <div class="modal fade hide" id="availableModal" tabindex="-1" role="dialog" aria-labelledby="TituloModalCentralizado" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered" role="document">
            <div class="modal-content">
                <div class="modal-body">
                    Domain Available!
                </div>
            </div>
        </div>
    </div>
    <div class="modal fade hide" id="unavailableModal" tabindex="-1" role="dialog" aria-labelledby="TituloModalCentralizado" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered" role="document">
            <div class="modal-content">
                <div class="modal-body">
                    Domain unavailable!
                </div>
            </div>
        </div>
    </div>
</form>

AJAX:

$(document).ready(function() {
    $("#salvar-form").click(function(e) {
        const www = $('.www').val();
        const domain = $('#domain').val();
        const com = $('#point').val();
        e.preventDefault();
        $.ajax({
                method: "POST",
                url: "domain-register.php",
                data: {
                    www: www,
                    domain: domain,
                    com: com
                },
            })
            .done(function(dominio) {
                if (dominio == 1) {
                    $('#availableModal').modal("show");
                } else if (dominio == 0) {
                    $('#unavailableModal').modal("show");
                }
            })
    });
});

PHP:

<?php
if (!empty($_POST)) {
    $dominio = $_POST['www'] . $_POST['domain'] . $_POST['com'];
    function dominio_disponivel($dominio)
    {
        if (checkdnsrr($dominio, 'ANY') && gethostbyname($dominio) != $dominio)
            return false;
        else
            return true;
    }
    if (dominio_disponivel($dominio))
        echo 1;
    else
        echo 0;
}
?>

1 Ответ

1 голос
/ 19 апреля 2020

может быть, вы должны сделать ответ от php как json, например

if(...)
  $res = ['status'=>true];
else
  $res = ['status'=>false];

return json_encode($res);

и в javascript разобрать json response

.done(function(dominio){
    var res = $.parseJSON(dominio);
    if(res.status){
      // show modal a
    }else{
      // show modal b
    }
})

Я не уверен, может быть jquery обрабатывает ответ как текст, поэтому логическое сравнение не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...