比较JavaScript和PHP变量
Comparing JavaScript and PHP variables
我需要比较一个javascript变量和一个php变量
var other = <?php echo $element; ?>;
if(exam == other){
这是比较这些变量的正确方法吗?它不起作用,但也许问题出在别的地方。该代码用于下面的函数excamTables()
function examTables(){
var exam = this.value;
console.log(exam);
var resultArray = [];
<?php foreach($exams as $element): ?>
var other = <?php echo $element; ?>;
if(exam == other){
resultArray = <?php echo json_encode($subs[$element], JSON_PRETTY_PRINT); ?>;
}
<?php endforeach; ?>
var strOption = "";
strOption = "<table>";
var keys1 = Object.keys(resultArray);
keys1.forEach(function(item1){
var keys2 = Object.keys(resultArray[item1]);
keys2.forEach(function(items2){
var keys3 = Object.keys(resultArray[item1][items2]);
value = resultArray[item1][items2];/*Need to not repeat subjects. This should be done in php file when selecting from DB*/
strOption += "<tr><td>" + value + "</td></tr>";
});
});
strOption += "</table>";
var table = document.getElementById("examTables");
var row = document.createElement("tr");
var cell = document.createElement("td");
cell.innerHTML = strOption;
row.appendChild(cell);
table.appendChild(row);
}
var checkboxes = document.getElementsByClassName('year');
for(var index in checkboxes){
//bind event to each checkbox
checkboxes[index].onchange = examTables;
}
这篇文章讨论了这个问题,并使用
echo json_encode($element);
我试过了,但是没有用,
function examTables(){
var exam = this.value;
console.log(exam);
var resultArray = [];
<?php foreach($exams as $element): ?>
var other = <?php echo json_encode($element); ?>;
if(exam == other){
resultArray = <?php echo json_encode($subs[$element], JSON_PRETTY_PRINT); ?>;
}else{
resultArray = <?php echo json_encode($subs['AP'], JSON_PRETTY_PRINT); ?>;
}
<?php endforeach; ?>
var strOption = "";
strOption = "<table>";
var keys1 = Object.keys(resultArray);
keys1.forEach(function(item1){
var keys2 = Object.keys(resultArray[item1]);
keys2.forEach(function(items2){
var keys3 = Object.keys(resultArray[item1][items2]);
value = resultArray[item1][items2];/*Need to not repeat subjects. This should be done in php file when selecting from DB*/
strOption += "<tr><td>" + value + "</td></tr>";
});
});
strOption += "</table>";
var table = document.getElementById("examTables");
var row = document.createElement("tr");
var cell = document.createElement("td");
cell.innerHTML = strOption;
row.appendChild(cell);
table.appendChild(row);
}
谢谢,
如果你想比较两个JSON对象,你应该考虑通过一个共同的属性值来评估相等性,否则你将不得不将它们都JSON.stringify
并比较结果。
<?php $element = json_encode($anObject); ?>
var other = <?php echo $element; ?>;
if(JSON.stringify(exam) == JSON.stringify(other)) {
// ...
}
<?php $element = json_encode($anObject); ?>
var other = <?php echo $element; ?>;
if(exam.prop == other.prop) {
// ...
}
另一件事:你应该小心你如何在PHP中回显一个值,然后被JavaScript解释。例如:
这个PHP…
$element = "elementValue";
var other = <?php echo $element; ?>;
…生成以下JavaScript
var other = elementValue;
可以看到,PHP只是将字符串"elementValue"插入到页面中。但是当JavaScript来解释表达式var other = elementValue;
时,它将期望elementValue
是一个预定义的变量。为了避免这种情况,在PHP中通过将$element
的值用引号括起来来回显它,因此我们有:
这个PHP…
$element = "elementValue";
var other = "<? echo $element; ?>";
…生成以下JavaScript
var other = "elementValue";
use
var other = "<?php echo $element; ?>";
代替
var other = <?php echo $element; ?>;
要检查是否在other中获取$element的值,使用alert(other);
现在可以用了。谢谢你的帮助,
function examTables(){
var exam = this.value;
var resultArray = [];
var i = 0;
<?php foreach($exams as $element): ?>
other = <?php echo json_encode($element);?>;
if(exam == other)
{
console.log("exam: " + exam + " is " + "element: " + other);
resultArray = <?php echo json_encode($subs[$element], JSON_PRETTY_PRINT); ?>;
}
console.log(resultArray);
i++;
<?php endforeach; ?>
var strOption = "";
strOption = "<table>";
var keys1 = Object.keys(resultArray);
keys1.forEach(function(item1){
var keys2 = Object.keys(resultArray[item1]);
keys2.forEach(function(items2){
var keys3 = Object.keys(resultArray[item1][items2]);
value = resultArray[item1][items2];
strOption += "<tr><td>" + value + "</td></tr>";
});
});
strOption += "</table>";
console.log(strOption);
var table = document.getElementById("examTables");
var row = document.createElement("tr");
var cell = document.createElement("td");
var tableinner = document.createElement("table");
var rowinner = document.createElement("tr");
var cellinner = document.createElement("td");
cellinner.innerHTML = strOption;
rowinner.appendChild(cellinner);
tableinner.appendChild(rowinner);
cell.appendChild(tableinner);
row.appendChild(cell);
table.appendChild(row);
}
谢谢
相关文章:
- 将PHP变量传递给jQuery时遇到问题
- 通过javascript重定向html传递php变量
- 如何在php变量中嵌入JQuery代码
- 在javascript函数中使用php变量
- 将地理编码结果转换为php变量以发布到mysql数据库
- JavaScript,PHP-用JavaScript将多个数据库记录发送到变量或表
- 如何将变量php传递给javascript
- 显示动态变量(php和javascript)的总数
- 传递变量PHP、Javascript location.reload和HTML输入
- 需要将变量 php 的值传递给 javascript,但我不能
- 将变量从 .html 传递到太大而无法容纳在 URL 中的变量.php
- 如何在函数中传递javascript中的变量php
- 在Jquery中插入变量PHP
- 选择正确的变量 php/javascript
- 将HTML存储在变量PHP中,然后回显它
- 将变量PHP Smarty传递给Javascript
- 传递HTML表单post数据到不同的文件/网页javascript变量(php)
- 问题与传递变量(php, sql, jquery拖拽)
- 设置PHP中的javascaript变量(PHP在javascript中)
- 将变量php问题化为代码jquery