如何让PHP调用Ajax

如何让PHP调用Ajax,php,jquery,html,Php,Jquery,Html,我在HTML中有一个表单和两个modals,在PHP中我创建了一个函数来检查域是否存在,最后在AJAX中,我在.done中有一个小函数,但问题就在这里。我希望,如果PHP返回1,javascript向用户显示'AvailableModel'模式,如果返回0,则显示'AvailableModal'。但是PHP只返回1或0,javascript什么也不做 HTML: PHP: 可能您应该将php的响应作为json,如 if(...) $res = ['status'=>true]; els

我在HTML中有一个表单和两个modals,在PHP中我创建了一个函数来检查域是否存在,最后在AJAX中,我在
.done
中有一个小函数,但问题就在这里。我希望,如果PHP返回1,javascript向用户显示'AvailableModel'模式,如果返回0,则显示'AvailableModal'。但是PHP只返回1或0,javascript什么也不做

HTML:

PHP:


可能您应该将php的响应作为json,如

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

return json_encode($res);
在javascript中解析json响应

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

我不确定,可能是jquery将响应视为文本,这就是为什么布尔比较不起作用的原因

done
函数中返回的值是多少?
dominio
是整数、字符串还是其他?进行一些基本调试。找出dominio实际上是什么(例如,
console.log(`[${dominio}]`),dominio的类型。它返回PHP结果(1或0)和整个HTML代码。您正在发布到同一页面?AJAX回调得到的响应是(在本例中)
0
然后是一些HTML-这会使
done
回调中的逻辑无效,因为响应既不是1也不是0。我提到了一些问题,比如:我在
.done
的if子句中将
res.status
更改为
res==1
res==0
。但是你的答案有效,谢谢!
<?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;
}
?>
if(...)
  $res = ['status'=>true];
else
  $res = ['status'=>false];

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