小编Rol*_*olf的帖子

当数据包含连续的问号时,无法理解的jQuery $ .ajax()行为

我希望这很清楚,我已经浪费了很多精力来解决这个问题,所以我可能没有多少留下来写一个完美的问题.此外,这可能要进入一个jQuery bug报告,但我宁愿它张贴在这里首先作为我是一个相对的JavaScript新手,所以也许我做错了什么?

我创建了以下代码来重现它.它使用PHP将收到的数据回显给浏览器,尽管它可以在没有任何PHP的情况下工作.

问题可以在Firefox 4和Chrome 10中重现.您需要控制台才能看到发生了什么.

这是代码:

<?
$input = file_get_contents('php://input');
if (isset($input) and !empty($input)) {
    echo $input;
    die();
}

?>

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
        <script>
            $(function(){
                var jsonData = {
                    "something":"??"
                };
                jsonData = JSON.stringify(jsonData);
                var onSuccess = function(data){
                    console.log("Ajax Success!");
                    console.log(data);
                }
                var onError = function(jqXHR, textStatus, errorThrown){
                    console.log("Ajax Error: "+textStatus);
                    console.log("More info:");
                    console.log(errorThrown);           
                    console.log(jqXHR);         
                }
                console.log("Now sending this: "+jsonData+" through Ajax...");
                var ajaxCmd = {
                    "url"       : "test.php", 
                    "dataType": "json",
                    "type"  : "POST",
                    "async" : false, …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery json

28
推荐指数
2
解决办法
6736
查看次数

公钥是否可以具有与私钥不同的长度(加密)?

我有一个1024位的私钥,并用它来生成一个公钥.这是否自动意味着我的公钥也有1024加密?或者它的加密大小可以更小?(512,256 ......)

PS:我最感兴趣的是RSA密钥中模数("n")的大小.大小通常为1024或2048位.但我很高兴看到这引发了一场讨论,所有这些都促进了我对密码学的兴趣.

encryption cryptography bit public-key-encryption private-key

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

CSS选择器无法匹配数字属性值?为什么?

我已经设置了一个简单的测试页来说明我遇到的问题.简而言之,这可以按预期工作(文本格式为粗体,带下划线的红色):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <style>
            [abc=x1] {
                color: red;
                text-decoration: underline;
                font-weight: bold;
            }
        </style>
    </head>
    <body>
        <div abc=x1>hello</div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这不会(文本保持黑色,不应用格式):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <style>
            [abc=1] {
                color: red;
                text-decoration: underline;
                font-weight: bold;
            }
        </style>
    </head>
    <body>
        <div abc=1>hello</div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我在两个例子之间唯一改变的是从x1到1的属性值(在CSS和HTML中).

所以看起来你无法匹配数字属性.

有谁知道为什么这......非常......有用......特征......存在吗?

html css css-selectors

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

如何使用自动递增的主键作为外键?

这就是我想要做的:

我有2张桌子......

CREATE TABLE `parent` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

CREATE TABLE `child` (
  `parent_id` int(11) DEFAULT NULL,
  `related_ids` int(11) DEFAULT NULL,
  KEY `parent_id` (`parent_id`),
  KEY `related_ids` (`related_ids`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

然后是一个约束:

ALTER TABLE `parent` ADD FOREIGN KEY (`id`) REFERENCES `child` (`parent_id`);
Run Code Online (Sandbox Code Playgroud)

如您所见,表parent具有自动递增的主键"id",该主键也用作子表的外键.

现在我想在父表中插入一条记录,如下所示:

INSERT INTO parent SET DATA="abc";
Run Code Online (Sandbox Code Playgroud)

它失败了,错误:

无法添加或更新子行:外键约束失败(myschema.parent,CONSTRAINT parent_ibfk_1FOREIGN KEY(id)REFERENCES child(parent_id))

我知道它失败了,因为它没有在子表中找到引用的记录.如果我开始在子表中创建一个记录,将它的parent_id设置为1,然后重置父表的自动增量计数器(以便下一个插入将具有id = 1),它的工作原理!但那不是解决方案.

如果子表中没有相关的行,我没有看到插入阻塞的效用... …

mysql constraints foreign-keys database-relations auto-increment

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

PHP手册.chm索引功能无法按预期工作

当我开始使用PHP(比如10年前)时,主要的东西是赢得我的,是.chm格式的手册.我曾经保持"索引"选项卡打开,并输入我需要的任何东西,它将指导我一个漂亮,简洁但详尽的参考页面.

现在,今天,我想用isset()的一些属性刷新我的记忆,所以我在索引中键入它,但没有出现任何相关内容.请在下面的屏幕截图中查看.

我不得不通过"搜索"标签找到该页面,这样不太方便.

我以前注意到类似的问题,但我忽略了它.那么,在发布错误报告或php.net之前,任何人都知道这里发生了什么?我是唯一有这个问题的人,还是PHP的另一个"改进"?

在索引搜索框中键入

php chm

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

“涓滴”自定义 JavaScript 事件

我正在研究 JavaScript 中的自定义事件。

根据 MDN,使用 CustomEvent 构造函数,有一个选项可以使事件“冒泡”(默认情况下为 false):

https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#CustomEventInit

例子:

// add an appropriate event listener
obj.addEventListener("cat", function(e) { process(e.detail) });

// create and dispatch the event
var event = new CustomEvent("cat", {"detail":{"hazcheeseburger":true}});
obj.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

我在 jsfiddle 上测试过:

http://jsfiddle.net/ppx4gcxe/

并且冒泡功能似乎有效。但我希望我的自定义事件能够“涓涓细流”,即触发子元素上的侦听器;与冒泡相反。

我依稀记得一些默认的浏览器事件“涓涓细流”。这被认为是早期浏览器时代的争论点之一。

无论如何,有没有办法在我的自定义事件上获得此功能?当然,任何相对简单和直接的方法。我真的不想编写一个函数来遍历所有子元素并手动触发它们上的任何侦听器。我希望有另一种方式。

javascript events dom

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

如何在Linux中的所有子目录上强制使用CURRENT目录权限?

我经常遇到这样的情况:我以root用户身份登录Shell(已经被告知这是一种不好的做法),然后将新文件复制到apache服务的某个目录中。

由于我以root用户身份登录,因此新文件的root用户将设置为owner,并且权限与已存在的文件不同,并且我需要更改Apache的权限才能访问这些文件。我是手动做的。

我正在研究一种更好的方法。我想知道是否有一种方法可以通过一个命令以某种方式将当前文件夹的权限应用于所有子文件夹和文件。

Windows具有此功能,您可以在其中将“所有文件和文件夹权限”重置为父文件夹的权限。

linux permissions shell

5
推荐指数
1
解决办法
2400
查看次数

Javascript 相当于 PHP 的 ::(范围解析运算符)

在 PHP 中,你可以这样做:

class myClass() {
    function doSomething(someVar) {
         // do something here
    }
    // etc... (other methods and properties)
}
Run Code Online (Sandbox Code Playgroud)

然后,当然,您可以在实例化类后调用该方法,如下所示:

$myObj = new myClass();
$myObj->doSomething();
Run Code Online (Sandbox Code Playgroud)

但是您也可以选择将该方法作为独立函数调用,而无需实例化该类(但您必须注意该函数中的依赖项),如下所示:

myClass::doSomething();
Run Code Online (Sandbox Code Playgroud)

我相信它是为 C++ 借来的东西......它被称为范围解析运算符(PHP 代码中的 Paamayim Nekudotayim......)
http://en.wikipedia.org/wiki/Scope_resolution_operator#PHP
http://www.php .net/manual/en/language.oop5.paamayim-nekudotayim.php

你会如何在 JavaScript 中做这样的事情?这似乎是不可能的。也许我以错误的方式接近这个,我应该透露我想要实现的目标......

我只有一个函数,它是这样的:

function submitContactForm(form) {
    // pretty JavaScript...
}
Run Code Online (Sandbox Code Playgroud)

我很高兴它是一个函数。但我想实现一个“resetContactForm()”,但希望以某种方式将它附加到 submitConatctForm 函数。

我知道我可能会这样做:

var contactForm = {
   "submit" : function(form) {
       //...
   },
   "reset" : function(form) {
       //...
   }
}
Run Code Online (Sandbox Code Playgroud)

我会像那样回答我自己的问题......

但是,除了我不喜欢这种语法,并想避免它之外,还有一个事实是,上面的结构不能用作类定义,它与 PHP 中的不一样......所以回到最初的问题:有没有办法让 JavaScript 结构可以同时用作类定义和独立函数的集合?

javascript php oop class scope-resolution

5
推荐指数
1
解决办法
2031
查看次数

XDebug on Hosting - 安全?

我有一个VPS帐户,我在其上设置了一个Linux服务器来托管一些客户网站,并在将网站发布到生产服务器之前上传网站的"预览".

我在自己的机器(Windows)上开发网站并在那里进行大部分测试.由于平台的不同,Linux主机上有时会出现问题,我可以使用调试接口...

我的问题是在远程公共服务器上安装xdebug是否安全,它也可用于托管生产网站?可能吗?推荐的?你怎么看?

谢谢...

php linux security xdebug

2
推荐指数
1
解决办法
2293
查看次数

如何在React中实现"正常"的ES5原型继承?

我的印象是ES6类基本上是围绕ES5对象系统的语法糖.当我试图在没有转换器的情况下运行React时,我想我可以使用旧语法来定义从React.Component"继承"的对象"类".

    var Board = function(props, state) {
        var instance = {};

        instance.props = props;
        instance.context = state;

        return(instance);           
    };

    Board.prototype = Object.create(React.Component.prototype);

    Board.prototype.render = function() {
        return(
            // ...stuff
        )               
    };
Run Code Online (Sandbox Code Playgroud)

但这不起作用!

react.js:20478 Warning: Board(...): No `render` method found on the returned component instance: you may have forgotten to define `render`
react.js:6690 Uncaught TypeError: inst.render is not a function(…)
Run Code Online (Sandbox Code Playgroud)

在这个要点中找到了替代品,以下是有效的:

    var Board = function(props, state) {
        var instance = Object.create(React.Component.prototype);

        instance.props = props;
        instance.context = state; …
Run Code Online (Sandbox Code Playgroud)

javascript prototypal-inheritance reactjs es6-class

2
推荐指数
1
解决办法
674
查看次数

MySQL INSERT ... SET ... ON DUPLICATE KEY失败......困惑

任何人都可以告诉我这个查询有什么问题:

INSERT `user` 
SET 
    `password` = SHA1('abc'), 
    `username` = 'admin'
ON DUPLICATE KEY UPADTE `password` = SHA1('abc')
Run Code Online (Sandbox Code Playgroud)

它导致(MySQL 5.6.11):

SQL错误(1064):您的SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便password在第5行使用'UPADTE = SHA1('abc')附近的正确语法

但我无法弄清楚我的语法有什么问题.从MySQL手册:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]
Run Code Online (Sandbox Code Playgroud)

资料来源:http://dev.mysql.com/doc/refman/5.5/en/insert.html

谢谢!

mysql sql insert syntax-error

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