AJAX实时更新​​带有新回声输出的PHP页面

时间:2011-06-21 18:49:45

标签: php ajax

我目前正在建立一个保险网站,除了CSS和HTML之外的其他任何东西都有点过头了。我刚刚想出了如何制作可以发出不同echo语句的变量链接。以下是原始网页的示例:http://www.mmisi.com/autoquote.php,此处是可变链接:http://www.mmisi.com/autoquote.php?discount=safedriver

我正在尝试使用这个类似的功能,同时使用AJAX(好吧,我认为AJAX是我需要的),以便在点击链接后更新实时页面而无需重新加载页面。

所以,我希望能够做的是让查看器在autoquote.php上,然后单击autoquote.php的链接?discount = safedriver。而不是链接加载一个全新的页面,它只会在运行中吐出适当的echo语句。

这是我目前拥有的PHP:

$discount = $_GET['discount'];

if ( $discount == "safedriver" ) { echo "Ask about a safe driver discount, which could save you up to 25% for drivers with no violations or at-fault accidents!"; }

4 个答案:

答案 0 :(得分:2)

你不需要一个AJAX请求,但是你去了:

您的HTML:

<a href="/autoquote.php?discount=safedriver" discount="safedriver" class="discount-class">Safe Driver</a>
<a href="/autoquote.php?discount=unsafedriver" discount="unsafedriver" class="discount-class">Unsafe Driver</a>
<span class="result"></span>

你的jQuery:

$(function(){
    $('a.discount-class').click(function(){
        $.get('/autoquoteAjax.php?discount=' + $(this).attr('discount'), function(data) {
            $('.result').html(data);
        });
    });
});

你的autoquoteAjax.php:

switch(trim($_GET['discount'])){
    case 'safedriver':
        echo "Ask about a safe driver discount, which could save you up to 25% for drivers with no violations or at-fault accidents!";
    break;
    case 'unsafedriver':
        echo "This will be expensive!";
    break;
}

请注意,discount="safedriver"不会在XHTML中验证

答案 1 :(得分:1)

你必须使用AJAX有什么特别的原因吗?您是否可以将预设输出存储在javascript哈希映射(即关联数组/对象)中,并根据用户选择的内容,您可以使用javascript将该特定行显示为&lt; div>在页面上。似乎只是为了显示某些内容而增加了一些开销。

另一种选择可能是将这些“线”作为&lt; p>页面上的标签(或其他),然后只是动态显示/隐藏它们。

底线:您必须能够将一些事件处理程序附加到HTML元素(它们不一定必须是&lt; a&gt;标记)才能触发某种操作。显示/隐藏,或根据一组预设行设置元素的innerHTML。

编辑:但如果您的心脏开始使用AJAX,那么您或多或少都在正确的轨道上。您需要做的是发出一个AJAX请求,然后将responseText分配给页面上元素的innerHTML。任何体面的AJAX教程都将为您提供如何实现XMLHttpRequest对象(IE与其他人)以及如何打开(),发送()和检查状态的基础知识。例如,w3schools有一个很好的教程。 http://www.w3schools.com/ajax/default.asp

答案 2 :(得分:0)

我建议您查看jQuery,更具体的.load() - 方法。

net附近有很多教程和示例。

答案 3 :(得分:0)

为了150%诚实,我不相信你应该为专业目的玩AJAX和PHP,除非你知道你在做什么,只是因为有很多地方你可以搞乱

除此之外,我还认为这个社区通常是一个很好的社区,并且如果你要求这个,那是因为你有一个迫在眉睫的截止日期,而不是因为你太懒了来学习这些语言。这就是为什么我会给你代码:

*请注意,php应该位于名为/autoquoter.php

的单独页面上

JS:

function getXMLText(dname){
    if (window.XMLHttpRequest){
      xhttp=new XMLHttpRequest();
    }
    else{
      xhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("GET",dname,false);
    xhttp.send();
    return xhttp.responseText;
}
function safery(boolvar){
    if(boolvar){
        document.getElementById("changling").innerHTML = getXMLText("/autoquoter.php?discount=safedriver");
    }
    else{
        document.getElementById("changling").innerHTML = getXMLText("/autoquoter.php?discount=unsafedriver");   
    }
}

HTML:

<a href="javascript:safery(true)">I am a safe driver</a><br />
<a href="javascript:safery(false)">I am NOT a safe driver</a><br />
<div id="changling"> </div>

然后将其放在autoquoter.php页面的顶部:

<?php switch(trim($_GET['discount'])){
    case 'safedriver':
        die("Ask about a safe driver discount, which could save you up to 25% for drivers with no violations or at-fault accidents!");
    break;
    case 'unsafedriver':
        die("This will be expensive!");
    break; } ?>

要将整个事情视为JSFiddle,请转到here(当然没有php)。

现在你有一个截止日期,所以你可以在这里停止阅读。我将这里的解释留给后人:

  1. 已加载页面
  2. 当用户点击链接时,javascript会查询该页面(autoquoter.php)并将其输出汇集到名为changeling
  3. 的空div中
  4. autoquoter.php使用标准switch语句根据其GET变量输出正确的警告