我正在尝试使用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();
}
答案 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),执行所有这些检查手动有时会成为一场失败的战斗。