PHP调用脚本函数,返回值为Uncaught SyntaxError:意外的令牌ILLEGAL

PHP call script function, with return value - Uncaught SyntaxError: Unexpected token ILLEGAL

本文关键字:SyntaxError 意外 ILLEGAL 令牌 Uncaught 脚本 调用 函数 返回值 PHP      更新时间:2023-09-26

我的函数,它可以工作:

<script>
function createCookie(name,value,sec) {
if (sec) {
    console.log('createCookie: '+name+', '+value+', '+sec);
    var date = new Date();
    date.setTime(date.getTime()+(sec*1000));
    var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
       if (c.indexOf(nameEQ) == 0) 
       {    console.log('readCookie: '+name+',value: '+c.substring(nameEQ.length,c.length));
           return c.substring(nameEQ.length,c.length);
       }
    }
    console.log('readCookie: '+name+', NULL');
    return null;
}
</script>

调用后台工作(正如我在控制台中看到的)

<?
echo '<script type="text/javascript">createCookie("'.$cookie_random_photo.'","'.$randf.'",60);</script>';
echo '<script type="text/javascript">readCookie("'.$cookie_random_photo.'");</script>';
?>

但当我探测到输出时,这会导致未捕获的语法错误:意外的令牌非法

<?
ob_start();
echo '<script type="text/javascript">readCookie("'.$cookie_random_photo.'");</script>';
$returned_value = ob_get_contents();
ob_end_clean();
?>

<?
ob_start();
echo '<script type="text/javascript">readCookie("'.$cookie_random_photo.'");</script>';
$returned_value = ob_get_clean();
?>

这会生成错误,并且屏幕输出"');",不调用readCookie()。

如何正确获取$returned_value

编辑完整js错误

VM119792:1 Uncaught SyntaxError: 
Unexpected token ILLEGAL
c.extend.globalEval @  jquery.js:29
Qa @ jquery.js:16
c.extend.each @ jquery.js:30
c.fn.extend.domManip @ jquery.js:110
c.fn.extend.append @ jquery.js:103
c.fn.extend.html @ jquery.js:107c.ajax.complete @ jquery.js:120
d @ jquery.js:124
x.onreadystatechange @ jquery.js:129

这很可能与服务器和客户端的字符集有关。你能像下面这样在脚本标签中添加charset="utf-8",看看这是否能解决问题吗?

 echo '<script type="text/javascript" charset="utf-8">readCookie("'.$cookie_random_photo.'");</script>';

还记得实际打印输出

<?
  ob_start();
  echo '<script type="text/javascript">readCookie("'.$cookie_random_photo.'");</script>';
  $returned_value = ob_get_contents();
  ob_end_clean();
  echo $returned_value; // <-- Only this will echo the contents back to the client. 
?>