AJAX обновляет страницу PHP новым выводом эха - PullRequest
1 голос
/ 21 июня 2011

В настоящее время я работаю на страховом веб-сайте, и на самом деле все, что угодно, кроме CSS и HTML, немного над моей головой. Я только недавно понял, как создавать переменные ссылки, которые выплевывают различные операторы эха. Вот пример исходной страницы: 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 ]

2 голосов
/ 21 июня 2011

Вам необязательно нужен 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 голос
/ 21 июня 2011

Есть ли какая-то особая причина, почему вы должны использовать AJAX?Могли бы вы не просто сохранить заранее заданные выходные данные, скажем, в хэш-карте javascript (т.е. ассоциативном массиве / объекте) и на основе того, что выбрал пользователь, вы можете использовать javascript для отображения этой конкретной строки в

на странице,Похоже, что делать запросы, просто чтобы показать что-то, добавляет слишком много накладных расходов.

Другой вариант может состоять в том, чтобы эти "строки" были представлены в виде тегов

(или чего-то еще) на странице, а затем просто отображались/ скрыть их динамически.

Итог: вам просто нужно иметь возможность прикреплять некоторые обработчики событий к вашим HTML-элементам (они не обязательно должны быть тегами ), чтобы вызвать какую-то сортировкудействия.показать / скрыть или установить innerHTML элемента на основе группы предустановленных линий.

edit: но если ваше сердце настроено на использование AJAX, то вы более или менее на правильном пути.Что вам нужно сделать, это сделать запрос AJAX, а затем назначить responseText для innerHTML элемента на странице.Любое приличное руководство по AJAX даст вам основы того, как реализовать объект XMLHttpRequest (IE против всех остальных) и как открыть (), send () и проверить состояние.Например, в w3schools есть хороший учебник.http://www.w3schools.com/ajax/default.asp

0 голосов
/ 21 июня 2011

Чтобы быть на 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, перейдите сюда (без php конечно).

Теперь у вас есть крайний срок, чтобы вы могли перестать читать здесь. Я оставлю это объяснение здесь для потомков:

  1. Страница загружена
  2. Когда пользователь нажимает на ссылку, javascript запрашивает эту страницу (autoquoter.php) и направляет ее вывод в пустой div, называемый changeling
  3. autoquoter.php использует стандартный оператор switch для вывода правильного предупреждения на основе его переменной GET
0 голосов
/ 21 июня 2011

Я бы рекомендовал вам взглянуть на jQuery , более конкретно, .load () -метод.

Вокруг net .

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