将javascript变量分配给php返回

将javascript变量分配给php返回,php,javascript,sql,Php,Javascript,Sql,是否可以将php返回赋值给js变量?例: <script type='text/javascript'> var h = <?php include'dbconnect.php'; $charl = (some number from another sql query) $sql=mysql_query("selct type from locations where id='$charl'"); echo $sql; ?> ; if(h ==

是否可以将php返回赋值给js变量?例:

<script type='text/javascript'>
var h = <?php include'dbconnect.php';
    $charl = (some number from another sql query)
    $sql=mysql_query("selct type from locations where id='$charl'");
    echo $sql; ?> ;
if(h == "hostile") {
    (run some other js function)
}
</script>

var h=将其更改为

var h = <?php include "dbconnect.php";
$charl = (some number from another sql query)
$sql=mysql_query("selct type from locations where id=$charl");
$row = mysql_fetch_row($sql);
echo json_encode($row["type"]); ?>;
var h=;
json\u encode()
将PHP值转换为有效的Javascript表示形式,您可以将其插入脚本。

将其更改为

var h = <?php include "dbconnect.php";
$charl = (some number from another sql query)
$sql=mysql_query("selct type from locations where id=$charl");
$row = mysql_fetch_row($sql);
echo json_encode($row["type"]); ?>;
var h=;

json\u encode()
将PHP值转换为有效的Javascript表示形式,您可以将其注入脚本中。

是的,这是可能的,也是一种常见的做法

但您的代码有一个小问题,它返回一个字符串,所以您必须在javascript中将其括在引号中

我已经更新了您的代码,以解决这个小问题并提高代码的可读性:

<?php 

include'dbconnect.php';
$charl = (some number from another sql query)
$sql=mysql_query("select type from locations where id='$charl'");

if (mysql_num_rows($sql) > 0) {
    $row = mysql_fetch_array($sql);
    $h = $row['type'];
} else {
    $h = null;
}

?>

<script type='text/javascript'>

var h = '<?php echo $h; ?>';
if(h == "hostile") {
    (run some other js function)
}

</script>

是的,这是可能的,也是一种常见的做法

但您的代码有一个小问题,它返回一个字符串,所以您必须在javascript中将其括在引号中

我已经更新了您的代码,以解决这个小问题并提高代码的可读性:

<?php 

include'dbconnect.php';
$charl = (some number from another sql query)
$sql=mysql_query("select type from locations where id='$charl'");

if (mysql_num_rows($sql) > 0) {
    $row = mysql_fetch_array($sql);
    $h = $row['type'];
} else {
    $h = null;
}

?>

<script type='text/javascript'>

var h = '<?php echo $h; ?>';
if(h == "hostile") {
    (run some other js function)
}

</script>


通过AJAX获取h的值不是更好吗?@RobertPodwika-No。这将涉及另一个HTTP请求,并且是异步的。但是,使用PHP来确定是否应该将脚本添加到文档中可能更有意义,而不是生成一个变量,然后在客户端对其进行测试。您正在使用并且应该使用。这不是如何使用
mysql\u query
。您需要使用fetchrow之类的工具从返回的结果对象中提取数据。我不理解下一票,这个问题的错误似乎是一个完全正确的问题。通过AJAX获取h的值不是更好吗?@RobertPodwika-否。这将涉及另一个HTTP请求和异步。但是,使用PHP来确定是否应该将脚本添加到文档中可能更有意义,而不是生成一个变量,然后在客户端对其进行测试。您正在使用并且应该使用。这不是如何使用
mysql\u query
。您需要使用fetchrow之类的工具从返回的结果对象中提取数据。我不理解下一票,这个问题出了什么问题,似乎是一个完全正确的问题。
var h=。否则,它将在引号中中断(例如使用句子
i'am lama
)。@MaëlNison apt并更改
var h=。否则,它将在引号中中断(例如,使用句子
i am a lama
)。@MaëlNison apt and changedNote:我还怀疑您的代码中存在与您的问题无关的PHP问题:PHP变量$sql应该使用类似“mysql\u fetch\u array($sql)的内容进行处理只有到那时,你才能访问“类型”。再详细一点会有帮助的,你在做什么?正如我所说的,我的答案只包含您原始问题的相关信息(混合使用php和javascript的可能性)。代码中显然也存在php/sql问题。如果你愿意,我也可以解决这些问题。我只是更新了一些关于我实际代码的信息,现在我没有收到错误,但它将整个字符串注册为变量h,我只需要h是php代码中的回显/打印内容。我刚刚更新了代码,以便它只将类型分配给hNote:我还怀疑您的代码中存在与您的问题无关的php问题:php变量$sql应该使用类似“mysql\u fetch\u array($sql)的东西进行处理只有到那时,你才能访问“类型”。再详细一点会有帮助的,你在做什么?正如我所说的,我的答案只包含您原始问题的相关信息(混合使用php和javascript的可能性)。代码中显然也存在php/sql问题。如果你愿意的话,我也可以解决这些问题。我只是更新了一些关于我实际代码的信息,我没有得到错误,但是它将整个字符串注册为变量h,我只需要h是php代码中回显/打印的内容。我刚刚更新了代码,以便它只将类型分配给h