获取存储在文件中的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作用域中使用这样的JS
switches
变量呢?你可以使用等价的JavaScript函数
JSON.decode()
,将其转换为JavaScript对象。你的建议似乎很有趣,它解决了我的问题。您能否相应地回复,并将详细解释标记为已解决<代码>:)
好了,顺便说一句,我在之前的一条评论中写了一个打字错误,
JSON.decode()
应该是
JSON.parse()
。它是JavaScript,不是JSON,所以你不能使用
JSON\u decode()。把
Switches.js
转换成
Switches.json
怎么样?@Svenskunganka,谢谢你的回复。那么我怎么能在我的全局JS作用域中使用这样的JS
switches
变量呢?你可以使用等价的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文件都在
之前加载,因此用户体验没有问题。