Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP代码传递给Javascript赢得';行不通_Javascript_Php - Fatal编程技术网

将PHP代码传递给Javascript赢得';行不通

将PHP代码传递给Javascript赢得';行不通,javascript,php,Javascript,Php,所以我有这个代码: else { $strlen = json_encode(strlen($_POST['message'])); ?> <script language="javascript" type="text/javascript"> var length = <?php echo $strlen ?> alert("Your message was too long (max 255 chars)

所以我有这个代码:

else {
    $strlen = json_encode(strlen($_POST['message']));
    ?>
    <script language="javascript" type="text/javascript">
        var length = <?php echo $strlen ?>
        alert("Your message was too long (max 255 chars), yours was " + length);
    </script>
    <?php 
    echo "Your message was too long (max 255 chars)";
    echo "Yours was " . $strlen . " charachters long";
}
else{
$strlen=json_encode(strlen($_POST['message']);
?>
变量长度=
警报(“您的邮件太长(最多255个字符),您的邮件“+长度”);
json\u encode
需要一个数组作为输入参数,您可以为它提供一个int值(字符串的长度)。
您实际上不需要将int值转换为json对象,
$strlen=strlen($\u POST['message']);
可能就足够了

您还缺少一个分号,如:

var length = <?php echo $strlen ?>
//Should be:
var length = <?php echo $strlen; ?>
//Or even:
var length = <?php echo $strlen; ?>;
var长度=
//应该是:
变量长度=
//甚至:
变量长度=;
这应该可以:

...

$strlen = strlen($_POST['message']);
?>
<script language="javascript" type="text/javascript">
var length = <?php echo $strlen; ?>;
alert("Your message was too long (max 255 chars), yours was " + length);
</script>
<?php 
echo 'Your message was too long (max 255 chars)';
echo 'Yours was ' . $strlen . ' charachters long';

...
。。。
$strlen=strlen($_POST['message']);
?>
变量长度=;
警报(“您的邮件太长(最多255个字符),您的邮件“+长度”);

此处缺少分号:
var length=;

var length=
也许把它改成

var length = <?php echo $strlen ?> ;
var-length=;

用引号括起来。对我有用

var length ="<?php echo $strlen ?>";
var-length=“”;

好的,我知道这里发生了什么。这里的评论中有很多错误信息

首先,让我们澄清这里的误解:

  • 中的PHP一行程序不需要分号

  • JavaScript将自动在行尾插入分号

OP的代码已中断,因为JavaScript未在以下行中添加分号:

var length = <?php echo $strlen ?>


json\u encode
支持二维数组,其中包含json列表/字典的
。我认为最好粘贴生成的JavaScript代码,这样我们就可以看到它是PHP还是JavaScriptproblem@user3122479确保标记“正确”答案(通过单击复选标记)然而,令我非常惊讶的是,问题在于
var
声明末尾缺少分号。JavaScript具有自动分号插入功能,如果忘记了一个分号,就不会爆炸。如上所述,您确实应该粘贴到JS输出中。@Allendar,
json_encode
不“首选”任何这样的事情:尝试过这个人,不是解决方案,它仍然显示0作为值,而不是它必须显示的实际值。它对php本身起作用,但在javascript中不起作用。好的,是
$\u POST['message'的长度
0?@JAAulde谢谢你提供的信息,我将删除我答案中的这一部分,除非json_编码部分不是问题所在。:)不,长度不是0,我当然检查过了;),但我现在把它整理好了,半列修复了它,有点奇怪,这会把代码搞乱,因为半列在javascript中不是必须要做的事?@Jordan from:“PHP代码块的结束标记自动暗示一个分号;您不需要分号终止PHP代码块的最后一行。”相反,在
中,js不需要分号(尽管我个人更喜欢)@OptimusCrime如果它解决了这个问题,那么它肯定是一个答案。@Jite,JS非常需要一个分号。@Jordan-这不是这个问题不起作用的原因。Javascript不需要分号。它使用分号分隔行,但由于警报前有一个换行符,所以这无关紧要。这不是问题的根源面对,因此不是这个问题的答案。这是解决方案;在var length=之后,所以是的,肯定是答案!该死,我忘了一个;它弄乱了我的整个代码,谢谢!是的,这就是问题所在^^^这只会将值转换为字符串。感谢你澄清了一些误解(我的包括:P)哦,如果你还在闲逛的话,这是我对被接受答案的投票。是的,这是正确的,并且深思熟虑地解释了原因。投票吧,接受吧,等等。啊,谢谢你的精彩解释,这正是我所需要的。这总结了很多。谢谢!
var length = <?php echo $strlen ?>
var length = <?php echo $strlen ?>;