如何使用Ajax调用特定的PHP函数和JQuery的结果

时间:2012-04-04 12:22:44

标签: php jquery

我第一次接触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&amp; s =”cat,然后以某种方式告诉ajax“通过索引,调用函数displayresults($ cat);?

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

TNX。

6 个答案:

答案 0 :(得分:1)

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

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

文件ajax.php必须只返回页面部分,例如

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

所以你不会在页面内页面。

答案 1 :(得分:0)

如果你看一下框架或cms,它们基本上有routes,它们将对index.php函数的调用映射到控制器的方法。

这是一个复杂的论点,您可以尝试开始阅读this文章

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我在很久以前为内部应用做了精确的事情....发生的事情是我通过ajax变量传递类名,函数名和函数参数,并在后端的php中读取相同的内容然后在班级中调用适当的函数与那些paraeters。

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,会话劫持问题....事情可能会有所不同

希望这有帮助。

答案 4 :(得分:0)

我认为您正在寻找一种通用策略来处理ajax请求它

例如Server Side Ajax

除非您使用特定框架(CI,yii等)

答案 5 :(得分:0)

您可能希望研究一些框架,因为它们可以让您更容易实现:

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