0

在下面的代码中,我写了一个条件 (if (epsflag==0)<?php $a=",hide:'true'";?> )。我想使用 javascript 实现相同的条件。我的意思是我想在我的 JSON 中使用 javascript 变量。任何帮助将不胜感激。如果我的问题不清楚,请让我知道。

{display: 'Wave Name', name : 'wavename', sortable : true, align: 'left'<?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'}
                                    ],  

                            });
                        }

4

2 回答 2

2

我认为您误解了网络的工作方式。

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,那么您会意识到这是一个重复的问题:有什么区别在客户端和服务器端编程之间?

所以。既然我们了解了 Web 的工作原理,那么如何解决您的问题?

对于这个非常具体的问题,我注意到您实际上根本不需要将任何东西传递回 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'}
于 2013-10-31T08:01:09.180 回答
1

也许这有帮助:

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,
    ...
于 2013-10-31T07:04:02.590 回答