获取存储在文件中的Javascript对象,并将其转换为php变量
我有一个获取存储在文件中的Javascript对象,并将其转换为php变量,javascript,php,Javascript,Php,我有一个Switches.jsjavascript文件,如下所示: //GLOBAL switches //Change the values accordingly var SWITCHES = { uber: true, //Uber social: true, //Social media pulgins g_charts: true, //Google Charts g_captcha: true, //Google C
Switches.js
javascript文件,如下所示:
//GLOBAL switches
//Change the values accordingly
var SWITCHES = {
uber: true, //Uber
social: true, //Social media pulgins
g_charts: true, //Google Charts
g_captcha: true, //Google Captcha
g_analytics: true, //Google Analytics
data_base: true, //Inserts user input data into DataBase
print: true, //Print option
pdf: true, //Download PDF report option
https: true //true for https, false for http
};
这个JS文件存储在我的服务器中
有没有办法将该对象和其中一个属性放入php变量中?我认为应该围绕php函数file\u get\u contents
和json\u decode
,但是我如何考虑JS文件中的注释,尤其是变量开关
$file_content = file_get_contents("Switches.js");
//some stuff
$http_switch = $SWITCHES[https];
AJAX和jQuery都是一个选项,因为这是纯服务器端运行的。因为
Switches.js
是JavaScript而不是JSON,所以不能使用JSON\u decode()。相反,您应该将其转换为JSON,并在客户端和服务器端对其进行解码/解析:
在PHP中,您可以执行以下操作:
$data = file_get_contents("Switches.json");
$switches = json_decode($data);
然后在客户端通过AJAX获取并解析:
$.get("/Switches.json", function (data) {
var switches = JSON.parse(data)
})
您的Switches.json
文件将是(json文件不得有注释):
由于Switches.js
是JavaScript而不是JSON,因此不能使用JSON\u decode()
。相反,您应该将其转换为JSON,并在客户端和服务器端对其进行解码/解析:
在PHP中,您可以执行以下操作:
$data = file_get_contents("Switches.json");
$switches = json_decode($data);
然后在客户端通过AJAX获取并解析:
$.get("/Switches.json", function (data) {
var switches = JSON.parse(data)
})
您的Switches.json
文件将是(json文件不得有注释):
它是JavaScript,不是JSON,所以不能使用JSON\u decode()
。把Switches.js
转换成Switches.json
怎么样?@Svenskunganka,谢谢你的回复。那么我怎么能在我的全局JS作用域中使用这样的JSswitches
变量呢?你可以使用等价的JavaScript函数JSON.decode()
,将其转换为JavaScript对象。你的建议似乎很有趣,它解决了我的问题。您能否相应地回复,并将详细解释标记为已解决<代码>:)
好了,顺便说一句,我在之前的一条评论中写了一个打字错误,JSON.decode()
应该是JSON.parse()
。它是JavaScript,不是JSON,所以你不能使用JSON\u decode()。把Switches.js
转换成Switches.json
怎么样?@Svenskunganka,谢谢你的回复。那么我怎么能在我的全局JS作用域中使用这样的JSswitches
变量呢?你可以使用等价的JavaScript函数JSON.decode()
,将其转换为JavaScript对象。你的建议似乎很有趣,它解决了我的问题。您能否相应地回复,并将详细解释标记为已解决<代码>:)
好了,顺便说一句,我在之前的一条评论中写了一个拼写错误,JSON.decode()
应该是JSON.parse()
。没有AJAX可以同步获取它吗?我将立即为所有其他JS文件使用这些变量。是的,使用var switches=JSON.parse($.get(“/switches.JSON”))
。但是,不推荐使用同步请求,因此建议不要使用同步请求。在MDN文档中:从Gecko 30.0(Firefox 30.0/Thunderbird 30.0/SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已被弃用。我的所有JS文件都在
之前加载,因此,用户体验没有问题。是否可以在没有AJAX的情况下同步获取它?我将立即为所有其他JS文件使用这些变量。是的,使用var switches=JSON.parse($.get(“/switches.JSON”))
。但是,不推荐使用同步请求,因此建议不要使用同步请求。在MDN文档中:从Gecko 30.0(Firefox 30.0/Thunderbird 30.0/SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已被弃用。我的所有JS文件都在
之前加载,因此用户体验没有问题。