通过HTML将PHP变量发送到javascript函数

时间:2015-09-10 20:54:47

标签: javascript php html

我正在尝试使用HTML将PHP变量发送到Javascript功能。我不知道是否可能。我是新手。

这是文件index.php和abc.php中的所有代码 附:我已将文件名从index.html更改为index.php

的index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
<?php
require("../php/abc.php");
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Some Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="file.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="here.js"></script>
</head>
<body onload="init();">
<noscript>
Your browser does not support Javascript!!
</noscript>
<table id="content">
    <tr>
        <td>
            <div id="scroll"></div>
        </td>
        <td id="colorpicker" valign="top">
            <img src="palette.png" id="palette" alt="Color Palette" border="1" onclick="getColor(event);" />
            <br />
            <input id="color" type="hidden" readonly="true" value="#000000" />
            <span id="sampleText">
            (text will look like this)
            </span>
        </td> 
    </tr>
</table>

<div>
    <input type="text" id="userName" maxlength="50" size="10" onblur="javascript: check('<?php echo $phpVariable; ?>');" />
    <input type="text" id="messageBox" maxlength="2000" size="50" onkeydown="handleKey(event);" />
    <input type="button" value="Send" onclick="sendMessage();"  />
    <input type="button" value="Delete All" onclick="deleteMessages();"  />
</div>
</body>
</html>

Javscript功能

function check(param_name)
{ 
 var oUser=document.getElementById("userName"); 
 oUser.value = param_name;
}

abc.php

if(isset($_POST['user_name'], $_POST['action'])) {
$user_name = $_POST['user_name'];
$action = $_POST['action'];

if($action == 'joined') {
    $phpVariable = user_joined($user_name);
}

function user_joined($user_name) {
$servername = "";
$username = "";
$password = "";
$dbname = "";

//Create connection

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}


$user_name  = mysql_real_escape_string(htmlentities($user_name));

$sql = "INSERT INTO table_name (column_name) VALUES ('$user_name')";
$query = "INSERT INTO table_name2 (column_name) VALUES ('$user_name')";

$result = $conn->query($query);

if($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error in inserting: " . $sql. "<br>" . $conn->error;
}

return $user_name;

$conn->close();

}

2 个答案:

答案 0 :(得分:0)

尝试类似的东西

HTML

<input type="text" id="nametxt" />
<button id="btn-check"></button>

的Javascript

$(document).ready(function (){

   $("#btn-check").click(function(){

       var name = $('#nametxt').val();

       var login = {
           parameter: name
       };

        $.ajax({

              type: 'POST',
              url:  'file.php',
              data: login,
              datatype: 'json'

        }).done(function(data) {

      console.log(data);
     }); 

   });

});

PHP

<?php

//do some

echo information; -- this way return parameters

?>

答案 1 :(得分:0)

正如您所写,将PHP变量的值输出到HTML页面的方法是<?php echo $phpVariable ?>。在较新版本的PHP(以及打开设置的较旧版本)中,您可以将其缩短为<?= $phpVariable ?>

您正在获得一个未定义的变量&#39;警告可能是因为$phpVariable未设置。在您的代码中,此变量仅在$action == 'joined'时初始化。如果您希望它具有默认值,请先给它一个:

$phpVariable = null;
// note that three equals signs are not necessary here
// but a good habit for cases where it matters
if ($action === 'joined') { ... }

当您将PHP变量输出到JavaScript字符串时,您应该转义输出,以免您的访问者容易受到XSS(跨站点脚本)攻击。在这种情况下,json_encode就足够了。但是,由于您的JavaScript不在<script>标记内,而是在onblur属性中,因此您必须转义HTML中特殊的任何字符。由于您在属性值周围使用双引号,htmlspecialchars就足够了。总而言之,您将输出htmlspecialchars(json_encode($phpVariable))。所有这一切的原因是你不想依赖你的输入是干净的 - 会犯错误,当他们这样做时,你不想让别人攻击你的用户。

<input type="text" id="userName" maxlength="50" size="10" 
    onblur="javascript: check('<?= htmlspecialchars(json_encode($phpVariable)) ?>');" />

由于我们已为null提供了默认值($phpVariable),并且我们正在调用check函数,我们应该添加&#34;检查&# 34;到check函数,以确保我们得到一个真正的价值,如下:

// you should use camelCase or under_scores, but not both, for consistency
function check(paramName) { 
    // loose equals to match null or undefined
    if (paramName == null) { 
        return;
    }
    var oUser = document.getElementById("userName"); 
    oUser.value = paramName;
}

或者,如果您想要非常小心您的函数输入,您可以验证paramName是一个字符串并且它具有非零长度,但是使用动态类型的语言(如JavaScript),执行所有这些检查手动有时会成为一场失败的战斗。