Может ли AJAX получать результаты от внутренней функции PHP, а не от внешней страницы? - PullRequest
0 голосов
/ 28 июля 2011

Я только начал изучать PHP и создал свой первый класс. Как бы то ни было, это работает, но я хочу немного привести в порядок вещи.

Прямо сейчас элементы в классе вызывают функцию ajax, которая объявлена ​​в заголовке документа.

Я не хочу, чтобы класс зависел от правильного заголовка, поэтому, чтобы сохранить его самодостаточным, я переместил функции скрипта в файл класса. Я не смог найти информацию о том, является ли это «нет-нет», поэтому, если это так, я хочу знать, «Почему плохой вид класса javascript / ajax?» Однако, если это приемлемая практика, у меня есть более сложный вопрос.

AJAX вызывает страницу PHP, результаты которой затем заполнят большую часть объекта класса на странице. Но я думаю, что класс был бы лучше, если бы он не полагался на внешние файлы php. Итак, я переместил файлы в функции в файле классов. Вот хитрый бит.

Как получить AJAX для получения результатов от функции, расположенной в том же файле, что и вызов AJAX, вместо внешней страницы?

Вот мой AJAX-код. В настоящий момент var url - это путь к одной из двух возможных страниц PHP вместо желаемых внутренних функций php. var dest - это то, где в объекте класса результаты заканчиваются.

function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
    ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
    ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();

function sndReq(url,dest) {
http.open('get',url);

http.onreadystatechange = function () {
    if (http.readyState == 4) {
        if (http.status == 200) {
            var responce = http.responseText;
            document.getElementById(dest).innerHTML = responce;
        }
    }
};

http.send(null);
}

1 Ответ

0 голосов
/ 28 июля 2011

То, что вы просите, звучит как xml-rpc или json-rcp. Это позволяет динамически выполнять код на стороне сервера и получать результаты.

Пример библиотеки jpascript rpc: http://barracudaserver.com/doc/WebServices/JRpcDoc.html

Однако я думаю, что вы просто хотите передать параметры. Самый простой способ - передать параметры get в URL

.
http://www.site.com/ajax.php?cmd=find_user&user_id=12

затем в php проверьте эти параметры в глобальной $_GET переменной

if(isset($_GET["cmd"]) && $_GET["cmd"] == "find_user"){
   $user_id = $_GET["user_id"];
   //some server-side stuff    
   echo results;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...