在JS中从php文件执行字符串,setTimeout vs eval()
Execute string in JS from php file, setTimeout vs eval()
我有一个Javascript代码,使用ajax从.php文件获得响应。我使用"eval()"进行测试,一切都很好(有点慢),但我发现了一个很好的技巧,我可以使用setTimeut。我仍然是一个初学者,但是每个人都说eval很危险,我应该避免它,这就是为什么我在寻找一个替代品。setTimeut工作得比eval(速度)好得多,但它安全吗?
所以使用setTimeout(结果,0)来执行我从php文件(作为字符串)收到的代码是安全的吗?还是它比eval()更安全?请帮忙,提前感谢。
My code Javascript:
function sendAjax(vData) {
$.ajax({
method: 'GET',
url: '_process.php',
data: vData,
success : function (result) {
setTimeout(result, 0);
//old method eval(result);
}
});
}
$('.button1, .button2, .button3').click(function () {
sendAjax($(this).attr('class'));
});
和.php文件
if (isset($_GET['button1'])) {
echo " $('.button1').hide(500, function () {
console.log('some1clickedbutton1');
});";
}
这样行吗?我从来没有尝试过Eval()或setTimeout来运行ajax返回的函数。但是对我来说,在javascript中已经有了函数,并根据返回的值简单地调用它更有意义。
php文件:if (isset($_GET['button1'])) {
echo "true";
}else{
echo "false";
}
然后是javascript:
function sendAjax(vData) {
$.ajax({
method: 'GET',
url: '_process.php',
data: vData,
success : function (result) {
if(result == "true"){
hideButton1();
}
}
});
}
function hideButton1(){
$('.button1').hide(500, function () {
console.log('some1clickedbutton1');
});
}
$('.button1, .button2, .button3').click(function () {
sendAjax($(this).attr('class'));
});
玫瑰的另一个名字…
eval
的大多数问题都是将字符串作为代码执行的一般问题。避免将字符串传递给setTimeout
和setInterval
, new Function()
以及其他任何沿着这些行的内容。
一般情况下,您最好使用实际的JavaScript编写代码,然后从服务器发送纯数据(其中没有逻辑)。
对你的代码要做的事情做很多假设,你可以这样做:
if (isset($_GET['button1'])) {
$clicked = "button1";
}
$response = array( clicked => $clicked );
header("Content-Type: application/json");
echo encode_json($response);
和
success : function (result) {
$("." + result.clicked).hide(500, function () {
console.log("some1clicked" + result.clicked);
});
}
相关文章:
- setInteval vs setTimeout
- $(this).prop('property') vs. this.property
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Js.erb VS按钮标记-不'不起作用.为什么?
- reactjs this.refs vs document.getElementById
- setTimeout可以与闭包内的函数一起使用吗
- Javascript setTimeout for an array
- 刷新后,setTimeout将工作或不工作
- 继续使用javascript中的setTimeout
- setTimeout函数能否在其前面的代码执行之前激发
- jQuery setTimeOut: in for-loop
- setTimeout vs. 事件绑定/取消绑定;什么更有效
- setTimeout(0) vs window.postMessage vs MessagePort.postMessa
- 在JS中从php文件执行字符串,setTimeout vs eval()
- setTimeout vs setInterval again
- 调试dojo小部件事件- setTimeout vs callstack
- While vs setTimeout in Javascript
- setTimeout(myFunction, 5000); vs setTimeout(myFunction(), 50
- 在HTML5应用程序中下载后台数据到浏览器数据库- settimeout vs工作线程
- 在更新循环中使用setTimeout vs比较时间戳