在 JSON 中有条件地使用 JavaScript 变量
using javascript variable conditionally in JSON
在下面的代码中,我写了一个条件 (if (epsflag==0)<?php $a=",hide:'true'";?> )
.我想使用 javascript 实现相同的条件。我的意思是我想在我的 JSON 中随意使用 JavaScript 变量。任何帮助将不胜感激。如果我的问题不清楚,请告诉我。
波名称",可排序:真,对齐:"左"<?php echo "$a"?>}
<script type="text/javascript">
function rowdata(epsflag,respflag){
if (epsflag==0) {
<?php $a=",hide:'true'";?>
}else
{
<?php $a=",hide:'false'";?>
}
//alert(respflag);
$("#flex1").flexigrid(
{
url: myurl,
dataType: 'json',
colModel : [
{display: 'Nr.', name : 'nr', sortable : true, align: 'center',width:25},
{display: 'Datum', name : 'consultationdate', sortable : true, align: 'left'},
{display: 'Wave Name', name : 'wavename', sortable : true, align: 'left'<?php echo "$a"?>},
{display: 'Name', name : 'respname', sortable : true, align: 'left'},
{display: 'E-mail', name : 'email', sortable : true, align: 'left',width:180},
{display: 'Telefoon', name : 'telefoon', sortable : true, align: 'left'},
{display: 'Medewerker', name : 'consultationwith', sortable : true, align: 'left'}
],
});
}
我认为你误解了网络的工作原理。
PHP 是一种字符串处理语言。它所做的只是生成字符串。由于javascript对PHP来说只是一个非常大的字符串,我们可以用另一个测试字符串替换它,以便更清楚地了解正在发生的事情。让我们将其替换为"bla bla bla.."
:
bla bla bla bla bla bla
<?php $a=",hide:'true'";?>
bla bla bla bla bla bla
<?php $a=",hide:'false'";?>
bla bla bla bla bla bla
<?php echo "$a"?>
bla bla bla bla bla bla
现在让我们简化一下:
<?php
$a=",hide:'true'";
$a=",hide:'false'";
echo "$a";
?>
这就是 php 执行的内容。因此,它输出字符串:
bla bla bla bla bla bla // note: you're not outputting anything here
bla bla bla bla bla bla
,hide:'false'
bla bla bla bla bla bla
现在将"bla bla"
替换为原始字符串的简化版本,输出变为:
<script type="text/javascript">
function rowdata(epsflag,respflag){
if (epsflag==0) {
// note: you echoed nothing here in PHP
}
else {
// note: you echoed nothing here in PHP
}
$("#flex1").flexigrid({
colModel : [
{align:'left',hide:'false'} // logically, it's always false
]
});
}
现在,如果你一直在听我的解释,并且突然意识到PHP根本不处理javascript,浏览器根本看不到PHP,那么你就会意识到这是一个重复的问题:客户端和服务器端编程有什么区别?
所以。现在我们了解了网络的工作原理,该怎么做才能解决您的问题?
对于这个非常具体的问题,我注意到你根本不需要将任何东西传回 PHP。您要做的就是更改 javascript 对象中的值。那么,当你可以使用javascript直接更改值时,为什么要使用PHP来操作javascript源代码呢?在 js 中执行此操作:
var wavedata = {
display: 'Wave Name',
name : 'wavename',
sortable : true
};
if (epsflag==0) {
wavedata.hide = 'true';
}
else {
wavedata.hide = 'false';
}
$("#flex1").flexigrid({
colModel : [
// other data
wavedata,
// other data
]
});
或者,如果您想使源代码尽可能接近当前代码,请按照 Grundy 的建议进行操作,只是因为您希望将值设置为字符串"true"
或"false"
将其更改为:
{/* ... */ align: 'left',hide: epsflag==0 ? 'true' : 'false'}
也许这会有所帮助:
function rowdata(epsflag,respflag){
$("#flex1").flexigrid(
{
url: myurl,
dataType: 'json',
colModel : [
{display: 'Nr.', name : 'nr', sortable : true, align: 'center',width:25},
{display: 'Datum', name : 'consultationdate', sortable : true, align: 'left'},
{display: 'Wave Name', name : 'wavename', sortable : true, align: 'left',hide: (epsflag==0)},
...
更新
如果你不想在对象内部使用变量,你可以尝试这样的事情:
function rowdata(epsflag,respflag){
var colModel = {};
if(epsflag == 0){
colModel = [
{display: 'Nr.', name : 'nr', sortable : true, align: 'center',width:25},
{display: 'Datum', name : 'consultationdate', sortable : true, align: 'left'},
{display: 'Wave Name', name : 'wavename', sortable : true, align: 'left',hide: true }
...
}else{
colModel = [
{display: 'Nr.', name : 'nr', sortable : true, align: 'center',width:25},
{display: 'Datum', name : 'consultationdate', sortable : true, align: 'left'},
{display: 'Wave Name', name : 'wavename', sortable : true, align: 'left',hide: false }
...
}
$("#flex1").flexigrid(
{
url: myurl,
dataType: 'json',
colModel : colModel,
...
- 将函数的上下文应用于javascript变量
- 如何通过ajax刷新JSF填充的javascript变量
- Javascript变量赋值|
- 限制javascript变量的最小/最大整数
- 来自文本输入null的html javascript变量
- 访问jsrender模板中的全局javascript变量并更新它
- 从数据库中获取数据并插入JavaScript变量
- 如何将javascript变量传递到Meteor Spacebars模板中
- 将JavaScript变量保存到Rails模型
- 在if语句下的html中使用javascript变量
- Javascript变量分配-按类别
- 操作javascript变量[HTML]以只显示文本
- 无法比较javascript变量
- 如何将smarty变量与javascript变量进行比较
- 如何使用PHP将javascript变量添加到mysql数据库中
- Javascript 变量使用 jquery 查找变量
- 重新加载页面时Javascript变量发生变化
- 在asp classic中使用javascript变量
- 全局Javascript变量变为null
- 如何向服务器端提交javascript变量