1

我与 Ajax 的第一次接触正在发生,我有点困惑。我已经阅读了许多问题,但我无法阅读答案,这很可能是在某个地方。

情况是,我正在使用 OOP PHP 方法,而我所做的一切都是通过 index.php 和参数进行的。所以我不会在表单帖子、按钮点击中调用任何其他 .php 文件。

我创建了一个 HTML 列表框(我想删除垂直滚动条,但这只是解决问题的一个好处),它提供了我的类别。

现在,通过单击每个类别,我想调用某个函数,然后为另一个 div 生成输出。

function swapContent(){
$("#myPresentDiv").html('<img src="../../imgs/ajax-loader-big.gif"/>').show();
var cat = $('#listbox').val();
$("#action").change(alert(cat));
var url = "&s=".cat;
$.post(url, {contentVar: cat} ,function(data) {
   $("#myPresentDiv").html(data).show();
});  

}

所以,我的 JQuery 脚本选择了正确的类别,我提醒它警告对话框,所以我确定这很好,然后使用目前的代码,我重新加载我的整个页面,所以我得到,一页一页在页面...

我试图弄清楚如何编写 JQ ajax 调用,它只会返回结果,而不是整个页面。

我可以输入 URL “index.php&s="cat, 然后以某种方式告诉 ajax “通过索引,调用函数 displayresults ($cat); 吗?

希望我写的一切对你有意义:)

肿瘤坏死因子。

4

6 回答 6

1

该 url 是您的 ajax 函数调用,必须只返回页面部分而不是整个 html 文档。如果你有

$.post('ajax.php',data,function(d){
  $('#responsediv').html(d).show();
});

该文件ajax.php只能返回页面部分,例如

<div>This is the new content</div>    

所以你不会有页面内页。

于 2012-04-04T12:30:59.593 回答
0

If you look at the frameworks or cms out there, they basically have routes that map calls to your index.php function to methods of the controller.

This is a complex argument, you could try to start out reading this article

于 2012-04-04T12:26:29.720 回答
0

是的,这是有道理的。您的问题基本上是:当您获得 AJAX 操作的结果并将其插入页面时,它会再次插入整个布局,而不是模板。

好的,所以解决方案是调用“无样式”的 PHP 脚本,即没有模板数据。因此,您的 PHP 脚本应该只输出一个简短的 HTML 片段而不是一个页面(您可能有一个可以为此页面删除的“页眉”和“页脚”)。您需要采取什么行动取决于您在服务器端使用什么 - 框架?内容管理系统?自定义 PHP 应用程序?

于 2012-04-04T12:31:25.047 回答
0

很久以前我为内部应用程序做了确切的事情......发生的事情是我通过ajax变量传递类名,函数名和函数参数并在后端的php中读取相同的内容,然后调用适当的使用这些参数在类中起作用。

PHP代码:

$option = trim($_GET['v']);

switch ( $option ) {
    case 1:
        $sid    = trim($_GET['q']);
        $page   = trim($_GET['p']);
        $method = trim($_GET['m']);

        $class  = new $page( $link );
        echo $class->$method( $sid );
    break;
    case 2:
        $page   = trim($_GET['p']);
        $method = trim($_GET['m']);

        $class  = new $page( $link );
        echo $class->$method();
    break;
    default:
        echo '';
    break;
}

但这是一个内部应用程序,因此不存在注入攻击、xss、xsrf、会话劫持问题......对于您来说,情况可能会有所不同

希望这可以帮助。

于 2012-04-04T12:35:40.030 回答
0

我认为您正在寻找一种通用策略来处理 ajax 请求,这取决于您

例如服务器端 Ajax

除非您使用的是特定框架(CI、yii 等)

于 2012-04-04T13:08:32.243 回答
0

您可能想研究一些框架,因为它们可以使您无限容易地实现它:

http://demo.atk4.com/demo.html?t=20

于 2012-04-08T11:14:42.110 回答