JQuery Ajax и PHP классы - PullRequest
2 голосов
/ 09 июля 2009

Я пытаюсь научиться использовать oop в php. Я также довольно плохо знаком с JQuery. Можно ли сделать Ajax-запрос к классу php? Я только когда-либо отправлял запросы Ajax в файл специально для этой цели, и он возвращает нужные мне данные.

Ответы [ 9 ]

6 голосов
/ 09 июля 2009

Краткий ответ : Нет.

Длинный ответ :

Ajax - это просто термин для отправки HTTP-запроса из браузера с использованием JavaScript, не покидая страницы.

Единственное, что вы можете "позвонить" - это URL.

Вы можете написать свой PHP, чтобы сделать что-то, основываясь на том, что URL, хотя.

<?php
    if ($_POST['action'] == "delete") {
        delete();
    }
?>
4 голосов
/ 12 июля 2012

Да! Все ответы no не достаточно ясны. Вы можете сделать это так:

$.post("processAction.php", { name: value }, myFunction);

Затем processAction.php проверит ваш класс и запустит его функции.

require("myClass.class.php");
session_start();

if (!isset($_SESSION['myClass'])){
   $_SESSION['myClass'] = new myClass();
}
$class = $_SESSION['myClass']; 

$data = $_POST['name'];
//run function
$class->functionName($data);

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

4 голосов
/ 09 июля 2009

Базового ответа нет, но это можно сделать легко.

Сам вызов ajax не может вызывать методы класса. У него нет способа инициации класса и последующего вызова метода. Это может привести к запуску PHP-файла на сервере только через вызов POST / GET для X-URL.

То, что вы можете сделать, это использовать другой файл в качестве посредника между ajax и методом. Другими словами, вместо прямого вызова php-файла (например, update.php), как показывают простые примеры, вы можете вызвать промежуточный файл (называйте его как хотите, ajax-сервер, ajax router и т. Д.), Который использует GET / Параметры POST, которые вы отправляете, выясняют, какой метод вы хотите использовать и какие значения передаете ему. Затем вы можете запустить метод из этого файла (инициировать класс и вызвать метод с параметрами) и вернуть результаты этого метода из этого файла в скрипт вызова ajax.

1 голос
/ 27 августа 2015

*******************JS File test-----**************************
function actionTest(){
	$.ajax({
		type:"POST",
		url:"test2.php",
		data:{"ac":"test","pp":"YHOOOOOOOO"}
	}).done(function(data){
		$("#show").html(data);
	});
}
*******************-----PHP file test2.php-----**************************
<?php
$ac = $_POST['ac'];
$pp = $_POST['pp'];
if($ac =="test"){
	$obj = new Tt();
	$obj->test($pp);
}

class Tt
{
	
	function __construct()
	{
		
	}
	function test($aa){		
		echo "This is test function!".$aa;
	}
}
?>
*******************----HTML file------**************************
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>TESTTTTTTT</title>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.css" />
    <script src="js/jquery-2.1.4.js" type="text/javascript"></script>
    <script src="js/test.js" type="text/javascript"></script>     
    <link rel="shortcut icon" href="img/icons/icon.png"/>
</head>
<body onload="actionTest()">
<div id="show"></div>
</body>
</html>
1 голос
/ 09 июля 2009

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

1 голос
/ 09 июля 2009

Да, конечно, вы просто передали бы значение, захваченное одним из ваших суперглобальных $_GET, $_POST или $_REQUEST, в ваш метод класса.

Если вы говорите о «прямом вызове» метода класса PHP из jQuery, то нет, вы не можете, нет в чистом смысле.

0 голосов
/ 09 июля 2009

Если вы хотите создать способ прямой передачи команд и указаний PHP через ajax, я смог увидеть это только с помощью PHP eval для кода, который отправляется ему по почте или попадает в jQuery. Например, в вашей разметке сделайте следующее ...

<div id="myDiv">
Loading...
</div> 

Затем добавьте jQuery где-нибудь в тег скрипта:

myFunction(formdata) {
  data = "somekey: "+formdata;
  $("#myDiv").load("myScript.php",data);
}

Очевидно, что для публикации этого сценария вам понадобится что-то вроде текстовой области, которая вызывает эту функцию javascript при нажатии на ссылку или что-то подобное ...

<textarea id="myText"></textarea><br />
<a href="#" onclick="myFunction($('myText').attr('value'))" >Go!</a>

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

     <?php 
      if ($_POST["somekey"]) {
         eval($_POST["somekey"]);
      }
     ?>

В конце концов, вам нужно будет убедиться, что все отформатировано правильно, чтобы поместить его в eval, так что следите за своими цитатами и убедитесь, что все в порядке, что происходит. Кроме того, ради любви к дерьму, защитите это Сценарий, как кто-то может причинить серьезный вред, если они овладели им.

0 голосов
/ 09 июля 2009

Нет, но вы можете отобразить вызов метода. Это более или менее то, что MVC поможет вам сделать. Таким образом, вызов на www.mysite.com/User/Login можно легко сопоставить с функцией входа в класс пользователя.

Возможно, вы захотите взглянуть на Codeigniter , например, это популярное решение MVC.

0 голосов
/ 09 июля 2009

Нет, вы не можете напрямую использовать метод объекта, но вы можете запросить файл, который выполняет этот метод.

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