Php 如何在yii2框架中点击加载内容?

Php 如何在yii2框架中点击加载内容?,php,jquery,ajax,yii2,Php,Jquery,Ajax,Yii2,我正在处理yii2项目,我们需要在单击时使用ajax加载块。 我写的ajax部分工作正常,但我坚持使用javascript。我的导师说我应该使用.append,但我找不到方法将它与控制器动作联系起来 php: UPD: HTML 如果我没记错的话,您不应该通过POST将操作作为变量发送。 这取决于在Yii2应用程序中如何设置路由,因此我只是猜测: ajax调用: $.post("Ajax/getProjects", {id:id}, function(data) { ... }); 在DOM中

我正在处理yii2项目,我们需要在单击时使用ajax加载块。 我写的ajax部分工作正常,但我坚持使用javascript。我的导师说我应该使用.append,但我找不到方法将它与控制器动作联系起来

php:

UPD:

HTML


如果我没记错的话,您不应该通过POST将操作作为变量发送。 这取决于在Yii2应用程序中如何设置路由,因此我只是猜测:

ajax调用:

$.post("Ajax/getProjects", {id:id}, function(data) { ... });
在DOM中追加内容:

$(".projects").append(jsonResponse.html);

猜测这是学校作业,因此没有给出完整的解决方案…

您的配置文件中是否配置了
enablePrettyUrl
设置为true的
urlManager
组件

如果是这样,Yi2将使用以下默认路由模板:
/

在您的情况下,这将导致
/ajax/get projects
url

完整的JavaScript代码如下所示:

$(".projects-load-btn").on("click", function(e) {
    e.preventDefault();
    var id = $(this).data("id");
    $.ajax({
        url: "/ajax/get-projects",
        data: { id: id }
    }).done(function (data) {
        $(".projects").append(data);
    });
});

您展示的代码是php代码,问题是关于javascript的?到目前为止,您在js中尝试了什么?是的,很抱歉无法在这里进行格式化$(document).on('click','projects load btn',function(e){e.preventDefault();var id=$(this).data('id')| | | 0;$(“.projects”).append(“/controllers/AjaxController.php”,{action:“getProjects”,id:id});});我在你的代码中没有看到任何ajax调用,我们也不知道你的html结构是什么样子,也不知道你的项目是什么。这不是学校的项目,更像是我和我的朋友试图建立我们的商品网站,我的叔叔是程序员,所以当我遇到困难时,我会打电话给他,这次他说我必须用append做smth,如果我不能成功,就去stackoverflow。我必须承认JS不是我的强项,我们以前有joomla网站,所以我主要是进入php。我会尽力帮你的,谢谢!好的,
append()
进入ajax请求的success/done事件触发的函数中。Html将位于
data.Html
中,您可以参考jQuery网站。他们有很好的文档。如果你这样搜索,你可能会在这里找到类似的问题。。。你不是唯一一个Javascript初学者:)祝你好运…嘿,非常感谢你的回复。我已经找到了写动作url的正确方法。我还提出了这样的js脚本(更新了帖子)。您能否解释一下您使用
var id=$(this)的目的?另外,我的js代码也不起作用,因此会出现以下错误:
jquery-1.12.4.js:10254 POSThttp://index.loc/ajax/get-projects 500(内部服务器错误)发送@jquery-1.12.4.js:10254 ajax@jquery-1.12.4.js:9738(匿名)@main.min.js:1 dispatch@jquery-1.12.4.js:5226 elemData.handle@jquery-1.12.4.js:4878
你能看一下吗?你需要看看你的内部
运行时/logs/app.log
。这不是问题。关于代码
varid=$(this).data(“id”)| | 0-我从你的第一篇文章中复制了它。通常我根本不用
| | 0
。我已经将代码更新到我在项目中使用的版本。
$.post("Ajax/getProjects", {id:id}, function(data) { ... });
$(".projects").append(jsonResponse.html);
$(".projects-load-btn").on("click", function(e) {
    e.preventDefault();
    var id = $(this).data("id");
    $.ajax({
        url: "/ajax/get-projects",
        data: { id: id }
    }).done(function (data) {
        $(".projects").append(data);
    });
});