无法通过PHP调用外部javascript函数

时间:2018-07-10 19:47:01

标签: javascript php html5

我正在建立一个网站,并将PHPJavascript合并到该网站中。我要使用该网站做的是使用一个界面,该界面可以使用户在某种意义上“登录”,然后存储通过使用cookies输入的信息。我正在尝试使用php调用外部js函数,但是由于某些原因,尽管脚本标记已根据需要添加到html文档中,但该函数根本没有被调用,并且无法弄清楚为什么或如何修复它。我在下面附加了部分代码。预先非常感谢。

我的PHP代码:

<?php
    $fail="";
    $success="";
    if (isset($_POST['submit'])) {
        echo "<script>console.log('Submitted');</script>";
        $first=$_POST["first"];
        $last=$_POST["last"];
        $city=$_POST["city"];
        if ($first!="test"||$last!="test"||$city!="test"){
            $fail="This is an error message";
        }
        else{
            echo "<script>console.log('This is working from html');</script>";
            $success= "<script src='main.js'>
                           console.log('success variable is working');
                           createCookie('first',$first);
                           createCookie('last',$last);
                           createCookie('city',$city);
                       </script>
                       <script>
                           console.log("Hello World!");
                       </script>";
        }
    }
?>

我的HTML部分:

<div id="container">
    <?=$fail?>
<form action="" method="POST">
    <p>Enter Family Name (as it appears on your invitation): </p>
    <input class="entry" type="text" name="first" placeholder="FIRST NAME" required><br><br>
    <input class="entry" type="text" name="last" placeholder="LAST NAME" required><br><br>
    <input class="entry" type="text" name="city" placeholder="CITY (ONLY)" required><br><br>
    <input name="submit" type="submit" style="margin:auto; display:block">
</form>
<?=$success?>

JavaScript代码:

function createCookie(name,value){
    document.cookie=name+"="+value;
    console.log("This is working");
    console.log(document.cookie);
    console.log("This is too");
}

function getCookie(name){
    var split=document.cookie.split(";");
    for (let i=0;i<split.length;i++){
        if (split[i].indexOf(name)===0){
            return split[i].substring(name.length+1); 
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这部分代码在网络浏览器中造成了行为冲突(您在同一src标签中同时拥有codescript

    $success= "<script src='main.js'>
                    console.log('success variable is working');
                    createCookie('first',$first);
                    createCookie('last',$last);
                    createCookie('city',$city);
               </script>";

您应该通过简单地制作第二个script标签(将它们拆分)来更改此设置:

    $success= "<script src='main.js'></script>
               <script>
                    console.log('success variable is working');
                    createCookie('first',$first);
                    createCookie('last',$last);
                    createCookie('city',$city);
               </script>";

这样,src不会否定script标记的任何代码内容。

第二,您还应该在这些js函数调用中引用从php添加的字符串。像这样:

    $success= "<script src='main.js'></script>
               <script>
                    console.log('success variable is working');
                    createCookie('first',". json_encode($first) .");
                    createCookie('last',". json_encode($last) .");
                    createCookie('city',". json_encode($city) .");
               </script>";

此处使用json_encode是为了确保可以安全地传递值并且不会破坏脚本。