通过ajax显示php输出


Display php output via ajax

我有一个php脚本来检查域是否可用。它对结果进行了回声处理,并且有4种可能的输出;

  1. 不可用
  2. 是否可用
  3. 已注册,但可以转移
  4. 无法传输

我正在尝试使用ajax将域和tld发送到脚本。如何在html中回显脚本的输出?据我所知,如果php给出结果,可以显示消息,但不能提取结果并在我的html表单下显示

所以基本上这就是目前发生的事情:

form  ->  $domain $tld -> AJAX -> GET -> domaincheck.php -> $dom = $_GET['domain'];
 $tld = $_GET['tld']; -> $domain = $dom . $tld; -> TransIP API -> $result

$result由这段php 设置

try
    {
        $availability = Transip_DomainService::checkAvailability($domain);
        switch($availability)
        {
      //check availability
            case Transip_DomainService::AVAILABILITY_INYOURACCOUNT:
                $result = htmlspecialchars($domain)
                            . ' is not available.';
            break;
            case Transip_DomainService::AVAILABILITY_UNAVAILABLE:
                $result = htmlspecialchars($domain)
                            . ' is not available for transfer.';
            break;
            case Transip_DomainService::AVAILABILITY_FREE:
                $result = htmlspecialchars($domain)
                            . ' is available for registration.';
            break;

            case Transip_DomainService::AVAILABILITY_NOTFREE:
                $result = htmlspecialchars($domain)
                            . ' is registered. If you are the owner,
                                    you could transfer it.';
            break;
        }
    }
    catch(SoapFault $e)
    {
    //error
        $result = 'An error occurred: ' . htmlspecialchars($e->getMessage());
    }
}
else
{
    $domain = '';
    $result = '';
}

我绝对不是编程天才,更像是一个游手好闲的UI设计师。因此,我们非常感谢您的帮助:)

这是完全可能的,而且现在网络上到处都有。

基本上,您需要做的是让PHP脚本输出您想要的$result,然后让AJAX将其放入html-dom中。下面是一个让你开始的例子:

在PHP脚本的末尾,添加以下内容:

echo json_encode(['result'=>$result]);
die();

这将获取$result变量,并将其放入以"result"为索引的数组中。然后,您将其编码为JSON格式,打印它,并终止脚本,因为它已经完成。(注意:除了json编码,还有其他方法可以实现,但我发现它是最简单、最可扩展的解决方案)。

然后,有一些像这样的javascript:

$.ajax({
    url: "your_url/with_the_php_script.php",
    type: "GET",
    dataType: "json",
    data: { domain: "yummypizza.com", tld: "the_moon" },
    success: function(data){
        if('results' in data){
            $('#html_element_for_the_results').html(data.results);
        }
        else{
            alert("Uh oh, no results!");
        }
    },
    error: function(data){
        alert("Uh oh! AJAX error!");
    }
})

您可能希望将其保存在函数中,并在表单提交或按下按钮时触发它,但您计划让用户提交数据。无论如何,你有几个组件:你有你要发送它的url,你要发送的数据(看看它是如何成为一个同时具有域和tld属性的对象,这是你的PHP脚本中的两个$_GET变量,所以这就是它要发送的数据)。然后,当它完成并成功时,它就发挥了成功的作用。

使用jquery,您可以使用$(element).html("something here")格式来替换页面上某些内容的innerHTML内容。因此,将适当的ID放在您希望显示$results的任何位置,并在success函数中选择它。