我第一次接触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。
答案 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)
答案 5 :(得分:0)
您可能希望研究一些框架,因为它们可以让您更容易实现: