Ajax-вызов не обновит внутренний html с помощью функции php, которая делает html-справку? - PullRequest
0 голосов
/ 31 января 2011

У меня есть следующий код, генерирующий контент на моем сайте:

<div class="content" id="links">
    <?php displayTitle("Links"); ?>
    <?php displayContent("Links", $isLoggedIn); ?>
</div>

В контенте есть кнопка, которая вызывает функцию Javascript 'addLink ()' для самостоятельного редактирования. Вот Javascript с Ajax-вызовом для изменения содержимого:

function addLink(){
    var ajaxRequest;  // The variable that makes Ajax possible!

    if(window.XMLHttpRequest){
        ajaxRequest = new XMLHttpRequest();
    } 
    else{
        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }

    ajaxRequest.onreadystatechange = function(){
            alert(ajaxRequest.readyState);
        if(ajaxRequest.readyState == 4){
            var ajaxDisplay = document.getElementById('links');
            ajaxDisplay.innerHTML = "<?php displayTitle('Links'); ?><?php displayContent('Links', $isLoggedIn); ?>"
        } 
    }

    var imgURL = document.getElementById('links_img').value;
    var linkURL = document.getElementById('links_link').value;
    var queryString = "?imgURL=" + imgURL + "&linkURL=" + linkURL;
    ajaxRequest.open("GET", "addLink.php" + queryString, true);
    ajaxRequest.send(null);
}

addLink.php добавляет объекты в таблицу, теоретически позволяя функции содержимого displayContent () отображать новые записи в таблице (displayContent () запрашивает таблицу).

Вызов PHP работает нормально, но мне нужно обновить страницу, чтобы увидеть изменения. Есть ли какая-то проблема с тем, как я это делаю? Возможно, потому что во внутреннем HTML уже есть вызовы PHP, когда страница загружается в первую очередь?

Любая помощь приветствуется, я немного новичок в Ajax.

1 Ответ

0 голосов
/ 31 января 2011
ajaxRequest.onreadystatechange = function(){
        alert(ajaxRequest.readyState);
    if(ajaxRequest.readyState == 4){
        var ajaxDisplay = document.getElementById('links');
        ajaxDisplay.innerHTML = ajaxRequest.responseText;
    } 
}

Извините, небольшое исправление. Вы пытаетесь получить доступ к сценариям pre-ajax php внутри функции обратного вызова ajax. Это не так, как это работает. Вам нужны данные, которые извлекаются после вызова ajax. Ajax получает выходные данные из запроса GET и сохраняет их в ajaxRequest.responseText. Попробуйте заменить это, а затем посмотрите, что вы получите.

В вашем addLink.php вы должны добавить ссылку, а затем отобразить данные, которые вы хотите отобразить как responseText. Случилось так, что вы внедрили данные VIA addLink, но на самом деле вы никогда не отображаете их правильно на клиентской стороне VIA ajax. Однако при обновлении страницы скрипт извлекает то, что было введено, и отображает его соответствующим образом.

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