1

我对 jQuery 和 Ajax 完全陌生,但我设法学习了如何做 Hello World、填充选择标签等等……问题是,我不喜欢使用结构化 PHP。我学到的方法是我必须用 $.getJSON 调用一些 PHP 文件,并且该文件必须“回显”我的结果。我想要的是能够调用一个 PHP 文件,该文件实际上是一个具有一些方法的类,并且该方法的返回将是 JavaScript 将接收的内容,而不仅仅是一个回显结果。

感谢您的关注。

Ps.:我在使用 Amfphp 的 PHP-OOP 和 Flex+PHP 方面有很多经验。我正在尝试构建不同版本的视图,并且我想重新使用 Flex 已经使用的类。

4

2 回答 2

5

jQuery 在您的计算机上运行,​​PHP 在服务器上运行。PHP 和 jQuery 只能通过一系列精心设计的字符串进行通信。在服务器上,您可以自由地创建对象、运行方法、操作输出以及其他任何事情。但是,如果您要将这些数据反馈回您的 jQuery 应用程序(仍在客户端机器上运行),则需要回显(或输出)PHP 脚本的结果。

你可以考虑这样的事情:

$.post('server.php', { 'class':'foo', 'method':'bar' }, function( response ) {
  /* do something with the output of $foo->bar(); */
});

正如您在此处看到的,我可以定义我想在服务器上调用的类和方法。从 开始server.php,我们将查看$_POST['class']$_POST['method']确定我们将实例化什么,以及我们将运行哪些方法。

于 2012-04-20T14:57:58.420 回答
1

AMF 在某种程度上与 HTTP 不同,它们是不同的协议。

当使用 AJAX(jQuery 与否)时,您在 URI 上调用 HTTP 方法,而不是 OOP 方法。所以一切都以至少两个映射结束:

  • 您的应用程序逻辑映射到方法和 URI。
  • 您的 Javascript 代码映射到方法和 URI。

这是使用Respect\Rest的示例:

$router->get('/users/*', function($userName) {
    return MyDatabaseLayer::fetchUser($userName); //Illustrative
})->accept(
    'application/json' => function($data) {
        header('Content-type: application/json');
        return json_encode($data);
    }
);

现在是 jQuery 部分:

$.getJSON('/users/alganet', function(user) {
    alert(user.name);
});

您应该为不同的操作使用适当的 HTTP 方法。保存用户将类似于:

$router->post('/users/*', function($userName) {
    return MyDatabaseLayer::saveUser($_POST['user']); //Illustrative
});

jQuery:

$.post('/users', $("$userform").serialize());

有四种主要的 HTTP 方法:GET、POST、PUT 和 DELETE。GET 和 POST 是最常见的。

有一个很好的琐事:HTTP、REST 和 AMF 都是由同一个人编写的:Roy Fielding。

于 2012-04-20T15:05:49.617 回答