Как я могу опрашивать страницу PHP, используя JavaScript? - PullRequest
2 голосов
/ 11 августа 2009

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

У меня есть страница php [скажем, counter.php], которая при вызове [загружается / просматривается] подключается к базе данных и увеличивает счетчик. У меня также есть другая страница с полем выбора, я хочу добавить функцию .js к событию onchange, которая будет вызывать / опрашивать файл counter.php, увеличивая счетчик.

Есть ли способ позвонить или опросить и файл / страницу из .js, я знаю, что это можно сделать через HttpRequest, но это кажется излишним, так как я не хочу ничего возвращать или что-либо менять на странице.

заранее спасибо

ки


Спасибо за ваши ответы, но, возможно, мне было непонятно, я не хочу ничего возвращать или менять на странице, я просто хочу опросить страницу. Я ищу более простой способ сделать это, не прибегая к ajax / iframe.

Вот пример того, что у меня есть:

counter.php

<?php
// connect to db
// increment counter val
// DOES NOT RETURN ANYTHING
?>

index.html

<script>
increment()
{
    // I Just need to poll the page [counter.php] here,
    // thus incrementing the counter, ie no change on this page !
};
</script>

<select onchange="increment();"> ... </select>

Ответы [ 5 ]

6 голосов
/ 11 августа 2009

Я думаю, что вы хотите реализовать ajax:

http://en.wikipedia.org/wiki/Ajax_(programming)

Самый быстрый путь, которым я могу придумать, для достижения чего-то подобного:

<?php   
echo '1';
?>

Скачать jQuery

И в заголовке вашего документа сделайте что-то вроде:

<script>
$(document).ready(function() {
    $('#idOfaDiv').load('counter.php');//'1' will be injected into div id="idOfaDiv"
});
</script>

См. Аякс / нагрузка

Кроме того, на этом сайте много дискуссий об AJAX. Я бы предложил попробовать несколько поисков на AJAX. И есть много, много способов достичь того, что вы пытаетесь сделать - важно учитывать, что то, что я предложил, это всего лишь один.

1 голос
/ 11 августа 2009

Вам нужно связаться с сервером, и если вы находитесь в браузере, это будет через HTTP-запрос. Назовите это Ajax, HTTPRequest, перезагрузка страницы, что угодно, сервер не может отличить. Используйте Ajax / HttpRequest для загрузки URL-адреса и просто ничего не возвращайте.

1 голос
/ 11 августа 2009

PrototypeJS предоставляет очень удобные Ajax и PeriodicalExecuter объекты, которые выполняют именно то, что вы хотите.

В этом примере запрос Ajax выполняется каждые 10 секунд. Вы также можете легко сделать Ajax-вызов из onchange вашего <select> элемента.

function increment() {
  new Ajax.Request( '/content.php', {
        method:  'get',
        parameters:  {},
        onSuccess:  function(response, jsonHeader) {
            //If you need to do something with a response, doe it here
        },
        onFailure:  function() {
            alert('Request failed because an error ocurred.');
        }
    });
}

new PeridodicalExecuter(function(pe) {
    //Call pe.stop() to stop the timer;
     increment();    
}, 10);
1 голос
/ 11 августа 2009

Вы также можете создать тег сценария через DOM и добавить HTML

addScript = function(src) {
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = src;
        head.appendChild(script);
    }

addScript('counter.php');

В вашем PHP верните инструкцию как Javascript.

например:

<?php 

header('content-type: text/javascript');

?>

document.getElementById('mydiv_id').innerHTML = '1';
0 голосов
/ 11 августа 2009

XMLHttpRequest на самом деле не так уж и сложен, но вы можете также сделать отправку формы, используя в качестве цели iframe.

<form action="increment_counter.php" target="my-iframe"...

Просто держите iframe скрытым, и все будет в порядке. Технически, атрибут target устарел, но он в HTML5, так что я бы не волновался.

Конечно, XMLHttpRequest действительно не так уж и плох, особенно если вы используете js lib.

ОБНОВЛЕНИЕ, просто чтобы уточнить, цель iframe не в том, чтобы получить или использовать возврат, а в том, чтобы страница не обновлялась с помощью целевого атрибута.

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