Как я могу получить данные из MySQL, используя ajax в PHP? - PullRequest
0 голосов
/ 11 февраля 2010

Я сохранил данные в базе данных MySQL, используя AJAX, и он работает. Но я сталкиваюсь с проблемой получения данных с использованием AJAX.

Моя кодировка для хранения данных (это страница комментариев):

function sendMail(form_id) {
    // Do a client-side check; if it passes, then move on; 
    // otherwise, report an error to the user

    //if (!validatePage(form_id)) return;
    if(!checkMail(document.getElementById('txtEmail').value))
    {
        document.getElementById('txtEmail').focus();
        return false;
    }
    window.scrollTo(0,0);
    divId = "results";
    var str = "";
    var elem = document.getElementById(form_id).elements;
    for (var i = 0; i < elem.length; i++) {
        if (
            (elem[i].type == "hidden") || 
            (elem[i].type == "text") || 
            (elem[i].type == "textarea")
        ) {
            // Text field
            str += elem[i].id + "=" + escape(encodeURI(trimField(elem[i].id))) + "&";
        }
        else if (elem[i].type == "checkbox") {
            // Check box
            if (elem[i].checked) {
                str += elem[i].id + "=on&";
            }
            else {
                str += elem[i].id + "=off&";
            }
        }
        else if (elem[i].type == "select-one") {
            // Drop-down menu (SELECT)
            var sel = elem[i];
            str += sel.id + "=" + sel.options[sel.selectedIndex].value + "&";
        }
    }
    str = str.substring(0, str.length-1);
    str = str.replace(/%250A/g,"\n") // Make sure that line breaks get transmitted properly
    if (form_id == "contact_form") {
        form_page = "sendMail.php";
    }
    AjaxRequest(form_page, str, "post");
}

// Make the AJAX request
function AjaxRequest(url, parameters, type) {
    http_request = false;
    if (window.XMLHttpRequest) {
        // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
        }
    }
    else if (window.ActiveXObject) {
        // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
            }
        }
    }
    if (!http_request) {
        alert("Cannot create XMLHTTP instance");
        return false;
    }
    if (type == "post") {
        // POST
        http_request.open('POST', url, true);
        http_request.onreadystatechange = AjaxRequestCb;
        http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http_request.setRequestHeader("Content-length", parameters.length);
        http_request.setRequestHeader("Connection", "close");
        http_request.send(parameters);
    }
    else if (type == "get") {
        // GET
        http_request.open('GET', url + parameters, true);
        http_request.onreadystatechange = AjaxRequestCb;
        http_request.send(null);
    }
    // if...else
}

// AJAX Callback
function AjaxRequestCb() {
    if (
        http_request.readyState == 1 || 
        http_request.readyState == 2 || 
        http_request.readyState == 3
    ) {
    }
    else if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            result = http_request.responseText;
            document.getElementById(divId).innerHTML = result;
            // If CAPTCHA failed, then repopulate it
            if (result.indexOf("CAPTCHA") > -1) {
                Recaptcha.reload();
            }
            else {
                // Clear form after email has been sent
                document.forms["contact_form"].reset(); // Not robust, I know (will modify later)
                Recaptcha.reload(); // Display a new CAPTCHA
            }
        }
        else {
            alert("Callback failed. There was a problem with the request.");
        }
    }
}

// Remove any unneccessary whitespace
function trimField(field) {
    re = /(^\s*)([^\b]*\S)(\s*$)/;
    if (re.test(document.getElementById(field).value)) {
        document.getElementById(field).value = document.getElementById(field).value.replace (re, "$2");
        return document.getElementById(field).value;
    }
    else {
        document.getElementById(field).value = "";
        return "";
    }
}

// The phone field shows how the user should input a phone number; 
// on the first focus, the value will be cleared so the user can 
// enter a phone number
function clearField(field_id) {
    if (first_time) {
        document.getElementById(field_id).value = "";
        first_time = false;
    }
}

Ответы [ 2 ]

2 голосов
/ 11 февраля 2010
  1. Ваш AJAX будет запрашивать страницу PHP с некоторыми параметрами GET или POST (эти параметры могут быть чем-то вроде поисковых фильтров или чего-то еще, что может быть полезно для вашего проекта). Вам не всегда нужны параметры, но в большинстве проектов они обычно нужны.
  2. Эта страница PHP будет затем запрашивать базу данных MySQL на основе этих параметров.
  3. Наконец, эта страница PHP будет выводить данные в формате, пригодном для синтаксического анализа, например XML, JSON ... Или вы также можете выводить HTML напрямую, но он менее переносим.
  4. Затем JavaScript интерпретирует ответ AJAX (данные, выводимые PHP на основе данных, полученных из MySQL).

Вы можете посмотреть учебник здесь на Tizag или просто Google it ...

0 голосов
/ 11 февраля 2010

Ajax просто означает «Создание HTTP-запроса, не покидая текущей страницы». Он касается только связи между веб-сервером и браузером. Вы по-прежнему получаете обычный HTTP-запрос (который, в данном случае, по-видимому, вызывает запуск программы PHP).

Проблемы с подключением к базе данных и получением данных из нее с помощью PHP для запроса Ajax такие же, как и для любого другого запроса.

Единственное отличие состоит в том, что вы, вероятно, захотите вывести что-то кроме полного HTML-документа.

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