首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用javascript将innerText转换为php函数

如何使用javascript将innerText转换为php函数
EN

Stack Overflow用户
提问于 2020-09-11 23:42:22
回答 2查看 50关注 0票数 0

我必须编程一个网站包含一个日历与事件,与循环通过月份的可能性,这个日历是由php函数生成的,我试图添加一个eventListener到一个div,这样当我点击它时,它将循环通过月份,每次生成一个新的日历。

经过一些研究后,我发现我需要使用AJAX,但我真的不知道如何使用它。

下面是我的代码:

代码语言:javascript
运行
复制
let next = document.getElementById("buttonNext");

let monthNb = String(new Date().getMonth() + 1).padStart(2, '0');
let yearNb = new Date().getFullYear();

next.addEventListener("click", function(event) {
    monthNb++;

    If (monthNb > 12) {
        yearNb++;
    }
                           // I know I am trying to send js var as php but idk ;-;         v      v 
    document.getElementById("calendarContainer").innerText = '<?php echo createCalendar(yearNb, monthNb); ?>';
});

HTML/PHP:

代码语言:javascript
运行
复制
<div class="button_leftRight"><img src="icons/left" id="buttonBack"></div>
<div class="button_leftRight"><img src="icons/right" id="buttonNext"></div>
<div id="calendarContainer">
    <?php
    echo createCalendar($year, $month);
    ?>
</div>

感谢您的宝贵时间!希望能找到一个好的解决方案!

如果你需要更多的信息,让我知道,我可能会忘记一些事情,这是我第一次发帖子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-11 23:55:18

如果您使用PHP并将POST请求发送到Fetch脚本,您可以像这样尝试-未经测试:

代码语言:javascript
运行
复制
<?php

    # calendar.php ~ obviously there will need to be MORE code than this...

    if( SERVER['REQUEST_METHOD']=='POST' && isset($_POST['year'],$_POST['month']) ){
        #ensure no extra data is sent back - flush buffers
        ob_clean();

        #send a response
        exit( createCalendar( $_POST['year'], $_POST['month'] ) );
    }

?>

以及使用Fetch发送AJAX请求的Javascript

代码语言:javascript
运行
复制
let next = document.getElementById("buttonNext");
let monthNb = String(new Date().getMonth() + 1).padStart(2, '0');
let yearNb = new Date().getFullYear();



next.addEventListener("click", function(event) {
    monthNb++;

    If (monthNb > 12) {
        yearNb++;
    }
    let fd=new FormData();
        fd.append('year',yearNb);
        fd.append('month',monthNb);
        
    fetch( '/path/to/calendar.php', {method:'post',body:fd})
        .then( res=>res.text() )
        .then( text=>{
            document.getElementById("calendarContainer").innerHTML=text
        })
});
票数 1
EN

Stack Overflow用户

发布于 2020-09-11 23:56:54

有很多方法可以做ajax和许多优化,但我给你一个如何做的简单指南。最简单的方法是创建一个php文件,让我们在web服务器中将其命名为ajax.php,其内容为

代码语言:javascript
运行
复制
<?php echo createCalendar($_GET['year'], $_GET['month']); ?>

然后,在您的js代码中对该ajax.php文件进行ajax调用,例如:

代码语言:javascript
运行
复制
let next = document.getElementById("buttonNext");

let monthNb = String(new Date().getMonth() + 1).padStart(2, '0');
let yearNb = new Date().getFullYear();

next.addEventListener("click", function(event) {
    monthNb++;

    If (monthNb > 12) {
        yearNb++;
    }
      
   fetch(`ajax.php?year=${yearNb}&month=${monthNb}`, {
      method: 'GET', 
      headers:{
        'Content-Type': 'application/json'
      },
    })
    .then(response => {
      document.getElementById("calendarContainer").innerText = response;
    }).catch(error => console.error('Error:', error));
});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63850249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档