使用php echo定义一个javascript var - javascript

我已经看到了对该问题的多个答复-因此,我敢肯定有人会很快将其标记为重复,但是我在任何其他线程中都没有看到该特定问题的答案。

我有两个测试文件:a.php和a.js

在a.php中,我定义

$q = $_GET['q'];

效果很好。

然后,我调用一个单独的a.js文件,其中有:

var partNumber = " <?php echo $q; ?>" ;

这是行不通的,因为partNumber实际上是<?php echo $q;?>

在我读过的有关该主题的几篇文章中,我都将以下两项视为最高评分,被接受的答案:

var partNumber = " <?php echo $q; ?>" ; //with quotes

var partNumber =  <?php echo $q; ?> ;  //without quotes

但是,这些都不适合我。不带引号的代码将导致我的代码无法执行(我想是因为javascript需要无错才能成功执行,并且这会导致错误),而带引号的代码只会输出我实际输入的内容。

两者之间有什么区别,我在这里做错了什么?

参考方案

如果来自a.php的html包含a.js:

a.php

<html><head>
<script type="application/json" id="myvars"><?=json_encode(["partNumber"=>$_GET["q"]]);?></script>
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/a.js"></script>
</head>
...

a.js

jQuery(function($){ 
    var myvars = $.parseJSON($("#myvars").html()), 
        partNumber = myvars.partNumber;
    alert(partNumber);
});

如果没有,您应该研究AJAX。

编辑:对于示例来说,可能有点太复杂...但是,如果您验证GET q参数,它与Content Security Policy兼容。

使用Javascript在URL上发布 - javascript

我使用Javascript将此URL“ R + C%20Seetransport%20Hamburg”传递给查询字符串,但是我需要使用C#以这种格式“ R%2bC + Seetransport + Hamburg”来获取URL使用的代码: var listname = $(this).text(); var listname1 = listname.trim…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

并发AJAX请求不起作用。最新请求将覆盖先前的请求 - javascript

我的网页上有一个表格,每行都有一个“ +”按钮,因此会出现一个迷你表格。迷你表包含来自超慢数据库的数据,因此我通过ajax请求将数据输入。我的问题根源于某种情况。假设您按下引起AJAX请求的加号按钮,而在等待时按下另一个加号按钮。第二个ajax请求导致第一个请求永不返回。换句话说,最新请求将覆盖所有先前的未决请求。知道为什么会这样吗?我觉得当您不使用jQue…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

JavaScript中的字符串评估函数 - javascript

            JavaScript中是否有任何内置函数,例如Python中的eval内置函数?注意:eval函数将方程式作为字符串并返回结果。例如,假设变量x为2,则eval("2x+5")返回9。 参考方案 是的,JavaScript中也有eval函数。此外,该声明应有效用于评估,即eval("2*x+5"…