小编Jos*_*eph的帖子

JSLint错误"意外的Var"

每当定义2个函数时,JSLint一直给出以下错误:

行__字符_的问题:意外的'var'.

我已尝试在脚本开头声明所有变量,但这并不能解决问题.尝试通过网络挖掘答案,但似乎无法找到答案.

var walk = function walker(node, func) {
    //code
}

var disp= function display(){
    //code
    return d;
}
Run Code Online (Sandbox Code Playgroud)

javascript jslint

7
推荐指数
1
解决办法
5399
查看次数

自动Web部署

我是这个想法的新手,但我只是想知道是否有一种方法或工具可以在部署我的网站之前自动执行某些任务.我想一气呵成地完成以下任务:

  • 缩小所有使用的JS
  • 缩小CSS
  • 缩小所有HTML和PHP
  • 在实际执行这些操作之前将它们创建为文件的副本,以便它们不会破坏原始源

deployment optimization

7
推荐指数
1
解决办法
1057
查看次数

可选参数首先在JavaScript中

为了方便用户,我有一个函数在所需的参数之前首先接收一个可选参数.例如:

ns.myFunction('optional arg', function(){
    //the required callback
});
Run Code Online (Sandbox Code Playgroud)

我这样做而不是执行以下操作,因为回调体可能很长,并且用户可能忘记覆盖可选参数的默认值:

ns.myFunction(function(){
    //the required callback
}, 'optional arg');
Run Code Online (Sandbox Code Playgroud)

目前我这样做是为了检查:

function myFunction(first, second) {

    //if second is undefined and first is a function
    if (typeof second === 'undefined' && typeof first === 'function') { 
        second = first;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题

  • 这是正确的方法吗?
  • 如何进行缩放,尤其是在所需参数之前有N个可选参数的情况下?

javascript

7
推荐指数
1
解决办法
3145
查看次数

在请求URL中公开表名和字段名

我的任务是创建这个Joomla组件(是的,joomla;但它不相关),一位教授告诉我,我应该尽可能使我的代码变得动态(代码需要较少的维护)并避免硬编码.我们最初想到的方法是获取url参数,将它们转换为对象,并将它们传递给查询.

假设我们想在"酒店"表中读取ID为#1的酒店.假设该表有"hotel_id","hotel_name"和其他一些字段.

现在,我们制作sql查询字符串的方法是解析看起来像这样的url请求:

index.php?task=view&table=hotels&hotel_id=1&param1=something&param2=somethingelse
Run Code Online (Sandbox Code Playgroud)

并将其转换为这样的PHP对象(以JSON等效显示,更易于理解):

obj = {
  'table':'hotel',
  'conditions':{
        'hotel_id':'1',
        'param1':'something',
        'param2':'somethingelse'
}
Run Code Online (Sandbox Code Playgroud)

并且SQL查询将是这样的,其中条件循环并附加到字符串中,其中WHERE子句的字段和值是对象的键和值(为了方便,仍然以JSON形式):

SELECT * FROM obj.table WHERE hotel_id=1 AND param1=something and so on...
Run Code Online (Sandbox Code Playgroud)

困扰我的问题是在请求网址中公开了表名和字段名.我知道这会产生安全风险,暴露出只应该向服务器端看到的项目.我正在考虑的当前解决方案是为客户端的每个表和字段提供别名 - 但这将是硬编码,这违反了他的政策.此外,如果我这样做,并且有一千个别名表,那就不实用了.

没有这样做的正确方法是什么:

  1. 硬编码的东西
  2. 保持代码动态和适应性

编辑:

关于任意查询(我忘了包含这个),当前在后端停止它们的是一个函数,它从硬编码对象(更像是这里显示的配置文件)中引用,并通过拾取来解析url输出参数或匹配它们.

配置看起来像:

// 'hotels' here is the table name. instead of parsing the url for a table name
// php will just find the table from this config. if no match, return error.
// reduces risk of arbitrary tables.

'hotels' => array(      

  // fields and their types, …
Run Code Online (Sandbox Code Playgroud)

mysql security field client-side

6
推荐指数
1
解决办法
1528
查看次数

SQL连接结果成为codeigniter中的对象

好的,有点背景,

  • 刚进入codeigniter
  • 不是sql和服务器端脚本的粉丝
  • 我知道加入的是什么
  • 我第一次有一个多对多的数据库

这是因为连接通常具有以下示例作为结果.但我想解析这个,而不必构建代码来忽略重复.这是一个3表连接样本.当我加入更多表时,重复值的问题会增加:

table1.authorid    table1.authorname    table2.books     table3.favorited
       1                 john           john's book 1        jean
       1                 john           john's book 1        joe
       1                 john           john's book 2        ken
       1                 john           john's book 2        mark
       2                 mark           mark's book 1        alice
       2                 mark           mark's book 1        ted
       2                 mark           mark's book 2        sarah
       2                 mark           mark's book 2        denise
Run Code Online (Sandbox Code Playgroud)

在codeigniter(或普通PHP)中是否有一种方法可以获取此数组形式并将其转换为类似json(并像json一样解析)

$result = [
    {
        'authorid':1,
        'authorname':'john',
        'books':['john's book1','john's book2'],
        'favorited':['jean','joe','ken','mark']
    },
    {
        'authorid':2,
        'authorname':'mark',
        'books':['mark's book1','mark's book2'],
        'favorited':['alice','ted','sarah','denise']
    }
]
Run Code Online (Sandbox Code Playgroud)

更新 …

php mysql json codeigniter

6
推荐指数
1
解决办法
2262
查看次数

服务器端事件(对于傻瓜:))

我阅读了有关服务器端事件的规范和一些示例/教程,但我现在完全理解整个过程.

如果在使用ajax时,请求 - >响应周期很容易理解,这里看起来有点复杂.如下所述:http://dsheiko.com/weblog/html5-and-server-sent-events,我不明白谁/什么在服务器上生成事件.就像有人不停地调用服务器脚本一样,这就产生了随机数.

不仅如此,作者还说:"此外,您不需要在事件源脚本中应用循环周期.这似乎是将消息自动推送到客户端的重复."
这是怎么回事?

谢谢,

javascript javascript-events

6
推荐指数
1
解决办法
605
查看次数

NodeJS是否重用已加载的模块并共享它的值?

我开始在NodeJS中构建我的项目并且想知道

  • NodeJS是否为需要相同模块的模块重用已加载的模块?
  • 模块是否在需要它们的模块之间保持相同的"状态"?
  • 如果其中一个或两个都发生了什么?面对一个类似于循环setTimeout异步代码的问题?

目前我已经测试了4个文件

  • common.js

    var i = 0;
    
    function add(v){i += v;}
    function view(){console.log(i);}
    
    module.exports = {
        add : add,
        view : view
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • a.jsb.js

    exports.common = require('./common.js');
    
    Run Code Online (Sandbox Code Playgroud)
  • server.js

    var a = require('./a.js'),
        b = require('./b.js');
    
    function start(){
        http.createServer(function (req, res) {
    
            a.common.add(2);
            a.common.view();
    
            b.common.add(4);
            b.common.view();
    
            a.common.view();
    
    
            res.writeHead(200, {'Content-Type': 'text/plain'});
            res.end('Hello World\n');
        }).listen(config.port, config.address || '127.0.0.1');
        console.log('Server running');
    }
    
    Run Code Online (Sandbox Code Playgroud)

结果给了我一个暗示结果:

2  - view() via a.js on favicon request
6  - view() …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

6
推荐指数
1
解决办法
1497
查看次数

当没有返回引用时,作用域是否终止?

以此代码为例:

var test = (function(){
  var name = 'rar';
  return function foo(){
    console.log('test');
  };
}());
Run Code Online (Sandbox Code Playgroud)

foo获取返回到test 没有任何引用name在内部范围.怎么了name?它被摧毁了吗?或者它是否继续存在并与返回的函数混淆,但是无法访问?第一种情况是否类似于执行以下操作,好像name从来不是等式的一部分?:

var test = function foo(){
  console.log('test');
};
Run Code Online (Sandbox Code Playgroud)

这是另一个案例:

var test2 = (function(){
  var name = 'rar';
  var age = '20';
  return function foo(){
    console.log(age);
  };
}());
Run Code Online (Sandbox Code Playgroud)

age被引用foo并将形成一个闭包.但是,name仍然没有被任何东西引用.name在这种情况下会发生什么?它被摧毁了吗?或者它是否继续存在并与返回的函数混淆,但是无法访问?

javascript

6
推荐指数
1
解决办法
47
查看次数

检查它是否是窗口对象

鉴于我的插件可以在任何JS引擎上运行(在浏览器中或不在浏览器中),

  • 如何知道某个变量实际上是浏览器window对象.

    就像我怎么知道是否someVar引用浏览器window对象.有什么东西window,我可以检查它是否真的是浏览器window对象?

  • 以及如何检查浏览器window对象是否确实存在而不仅仅是window包含对象的某个变量.

    假设你不能告诉,如果someVarwindow本身,并且要匹配它的真正的浏览器window对象一样someVar === window,你怎么弄window,你就一定是浏览器window,而不是从外部作用域一些其它物体命名window,或其他一些全球来自另一个环境?

只是为了澄清一点:

  • 我不是在寻找全球环境.我正在寻找window专门的浏览器对象.
  • 我没有检查脚本是否在浏览器上运行.

我不能做一些事情,if(!window)因为window可能只是在范围之外的某个地方宣布的另一个对象.

function someFunction(){
  var window = {foo:'bar'};

  (function(){
    console.log(window); //{foo:'bar'}
  }());
}
Run Code Online (Sandbox Code Playgroud)

我无法检查,if(window.window === window)因为我也可以自我引用,如前所述,window可能是来自外部范围的对象:

var bar = {};
bar.bar = bar;
bar.bar.bar.bar.bar.bar === bar; //true
Run Code Online (Sandbox Code Playgroud)

以下可能不起作用,因为脚本可以在除全局空间之外的其他内容中包装或连接.this也可以用这样的方法调用修改call() …

javascript

6
推荐指数
1
解决办法
4999
查看次数

等待Json调用在javascript中完成

我在我的javascript方法中使用下面的json调用

function go123(){
    var cityName = "";
    var temp = $.getJSON("https://abc.in/api/city?callback=?", args,function (data) {
        if (data.properties.city != null){ 
            cityName = data.properties.city;
            check = true;
        } else {
            cityName = "NaN"
        }
    }); // end of my Json Call.

    // my validation is done below
    if(cityName != "NaN"){
        return false;
    } else {
    // here I except the cityName to not be "" but be some value which  is set as :cityName = data.properties.city;
        return true;
    }
} // end …
Run Code Online (Sandbox Code Playgroud)

javascript json

5
推荐指数
2
解决办法
2万
查看次数