eval未在javascript中运行

eval not running in javascript

本文关键字:运行 javascript 未在 eval      更新时间:2023-09-26

我在将educationflag变量设置为1时遇到问题。我正在解决的问题是,如果flag为1,就不调用enableEdit.php文件。

当控件处于if条件时,我想将标志设置为1。现在控件处于if条件下,但没有将变量设置为1。我的代码打印在下面。I

var educationFlag=0;
function editEducation(class){
   //I send education in class variable. So class ='education';
   var condition=eval(class+'Flag');
   if ( condition == 0 ){
      $.ajax({
        url: "enableEdit.php",
        data: "class="+class,
        success: function(msg) {    
        }
    })
      eval(class+'Flag'=1);
   }
}

感谢

在不试图解决潜在问题和停止全球范围的污染的情况下,这应该是可行的。请注意,我已将保留单词类重命名为varPrefix

var educationFlag=0;
function editClass(varPrefix) {
   if (window[varPrefix+'Flag'] === 0 ){
      $.ajax({
        url: "enableEdit.php",
        data: "class="+varPrefix,
        success: function(msg) {    
          window[varPrefix+'Flag']=1;
        }
    })
  }
}

我用varPrefix变量发送教育。因此varPrefix="教育";

editClass("education") ...

传递到函数中的class变量的值是多少?我会做一个有根据的猜测,它会是类似education的东西?是这样吗?

在这种情况下,第一个eval()实际上是这样的:

var condition=eval('educationFlag');

第二个是:

eval('educationFlag'=1);

第二个失败,因为=1部分不在字符串中。这是一个简短的答案,它直接解决了你的问题。

然而,更好的答案是eval()使用错误。对于这种事情,您永远不应该使用eval()。由于educationFlag是一个全局变量,您可以通过作为数组元素的window对象访问它:这意味着您可以做完全相同的事情,而不必使用有风险的eval()

您可以这样引用它:window['educationFlag']

因此,您的eval()线路可以这样更换:

var condition=window[class+'Flag'];

window[class+'Flag']=1;

希望能有所帮助。

我不明白你想在代码中做什么。。。您说要"如果flag为1,则不调用enableEdit.php"。如果是这样的话,你为什么不能这样做:

if(flag == 1) { ... }

去掉你的eval语句?