通过ajax显示php输出

时间:2015-11-27 17:26:57

标签: php jquery ajax

我有一个PHP脚本来检查域是否可用。它回应了结果,有4种可能的输出;

  1. 不可用
  2. 可用
  3. 已注册,但可以转让
  4. 无法转让
  5. 我正在尝试使用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设计师。所以任何帮助都表示赞赏:)

1 个答案:

答案 0 :(得分:4)

这是完全可能的,并且最近在网络上发生。

基本上你需要做的是,让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!");
    }
})

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

使用jquery,您可以使用$(element).html('here here')格式替换页面上某些内容的innerHTML内容。因此,将相应的ID放在您希望显示$ results的位置,并在成功函数中选择它。