PHP标记后Javascript停止工作

PHP标记后Javascript停止工作,javascript,php,Javascript,Php,我在登录时设置了会话变量“ActiveAcademicYearStartOn” 如果我们在view.php中使用var_dump()作为会话变量,则输出如下 object(stdClass)#11 (1) { ["$date"]=> object(stdClass)#12 (1) { ["$numberLong"]=> string(13) "1546297200000" } } 现在在view.php文件中,我试图在javascript标记内的javascript代码中获取会

我在登录时设置了会话变量“ActiveAcademicYearStartOn”

如果我们在view.php中使用var_dump()作为会话变量,则输出如下

  object(stdClass)#11 (1) { ["$date"]=> object(stdClass)#12 (1) { ["$numberLong"]=> string(13) "1546297200000" } }
现在在view.php文件中,我试图在javascript标记内的javascript代码中获取会话变量,如

  $("#session_start_date").val(getDateString('<?php echo $_SESSION['activeAcademicyearStartsOn'] ?>'));
$(“#会话_开始_日期”).val(getDateString(“”));
所有Javascript都停止工作

     <script type="..">
        ...
        ...   
        $(document).ready(function(){  
        ...   
             $("#session_start_date").val(getDateString('<?php echo $_SESSION['activeAcademicyearStartsOn'] ?>'));
        ...
        });

        function getDateString(str)
        {
            if (str == '')
                return;

            var dateObj = new Date(str.$date.$numberLong - 1000);
            var month = dateObj.getMonth() + 1; //months from 1-12
            var day = dateObj.getDate();
            var year = dateObj.getFullYear();

            return (month + "/" + day + "/" + year);
        }          
        </script>

...
...   
$(文档).ready(函数(){
...   
$(“#会话_开始_日期”).val(getDateString(“”));
...
});
函数getDateString(str)
{
如果(str='')
回来
var dateObj=新日期(str.$Date.$numberLong-1000);
var month=dateObj.getMonth()+1;//从1到12个月
var day=dateObj.getDate();
var year=dateObj.getFullYear();
申报表(月+“/”+日+“/”+年);
}          
为了进行测试,如果我放入另一个会话变量,它的工作原理如下

    $("#session_start_date").val('<?php echo $_SESSION['uid'] ?>');
$(“会话开始日期”).val(“”);

感谢您的帮助。

在我看来,您在php中将一个对象回送到javascript中的带引号的字符串中,并将其用作函数中的对象

如果您将php对象转换为javascript对象,我认为它应该工作得更好

$("#session_start_date").val(getDateString(<?php echo json_encode($_SESSION['activeAcademicyearStartsOn']); ?>));
$(“#会话_开始_日期”).val(getDateString());

您需要做两件事

  • 将json_编码的字符串传递给javascript调用,如@Noino所述
  • $(“#会话_开始_日期”).val(getDateString())

    (整个代码是一行。)

  • 在使用这些值之前,解析此JSON字符串,使其成为javascript对象
  • str=JSON.parse(str)


    在getDateString()函数中。

    $(“#会话_开始_日期”).val(getDateString(“”);试着用“”代替“”应该没关系@HP371-如果你仔细想想。。。内部
    在服务器端处理检查页面源。。。在
    $(“#会话_开始_日期”).val(getDateString(
    )之间显示的内容检查浏览器开发人员控制台中生成的javascript。确保输出不包含任何额外的字符。实际上,您将php中的对象回显为javascript中的带引号的字符串,并将其用作函数中的对象。这真的不可能奏效,不是吗?