小编M M*_*ler的帖子

从jQuery选择器创建DOM元素

我想知道是否有可能,而不是通过jQuery选择器从DOM中选择一个元素,如果我可以创建一个.

例如:

$.create('#hello').insertAfter('#test');
Run Code Online (Sandbox Code Playgroud)

会生成以下内容:

<div id="test">This element already existed in the DOM.</div>
<div id="hello"></div>
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,对于更复杂的操作:

$.create('#test.a.b');
Run Code Online (Sandbox Code Playgroud)

对于:

<div id="test" class="a b"></div>
Run Code Online (Sandbox Code Playgroud)

显然,更复杂的操作如:selected或:nth-​​child或:not()以及所有这些操作都不需要实现.

有人知道解决方案吗?

谢谢.

jquery dom selector

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

有人能清楚地解释为什么mysqli_prepare()/ bind_param()比real_escape_string()更好吗?

好吧,我还是不太懂.我一直在阅读,为了正确地逃避你的MySQL查询,你需要使用mysqli_prepare()mysqli_bind_param().

我尝试使用这个设置,坦率地说,它有点笨拙.当我不需要再次引用变量时,我会通过引用传递变量,并且只需要更多行代码来完成相同的任务.

我想我只是不知道它们之间的区别:

<?php
$sql = new \MySQLi(...);
$result = $sql->query('
   UPDATE `table`
   SET
      `field` = "'.$sql->real_escape_string($_REQUEST[$field]).'";
');
?>
Run Code Online (Sandbox Code Playgroud)

<?php
$sql = new \MySQLi(...);
$stmt = $sql->prepare('
   UPDATE `table`
   SET
      `field` = ?;
');
$value = $_REQUEST[$field];
$stmt->bind_param('s', $value);
$stmt->execute();
$result = $stmt->get_result();
unset($value);
?>
Run Code Online (Sandbox Code Playgroud)

除了更多的代码.

我的意思是,他们是否实现了这一点,以便人们在发送查询之前不会忘记转义值?还是以某种方式更快?

或者当我打算重复使用相同的查询时(因为mysqli_stmt可以重复使用)并在其他情况下使用传统方法,我应该使用此方法吗?

php mysql mysqli mysql-real-escape-string prepared-statement

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

从AJAX请求剥离POST的PHP配置?

我知道这似乎太复杂了,但我很困惑.

我有一个页面使用jQuery的post方法向我的API发送一个AJAX POST请求.它们都在同一个域/服务器上.

$.post('api/login.php', {username: 'test', password: 'test'}).done(function (res) {
    alert(res.response);
});
Run Code Online (Sandbox Code Playgroud)

API看起来像这样:

<?php
exit (json_encode(array ('response' => print_r($_REQUEST, true))));
Run Code Online (Sandbox Code Playgroud)

这在我的本地WAMP设置中按预期工作,但在Bluehost上,它显示就Array ()好像请求中没有参数.

如果我$.post改为$.get,它接收两个参数就好了.

如果我使用HTML表单并在不使用AJAX的情况下发送数据,它也会按预期工作,例如

<form method="post" action="api/login.php">
    <input type="text" name="username" value="test">
    <input type="text" name="password" value="test">
    <input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

我想我已经用尽了我可以创建的测试以试图消除任何其他可能性,它只是归结为一些非常奇怪的东西 - 我的PHP脚本在AJAX请求中没有收到POST字段.

php ajax jquery post bluehost

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

MySQL - 选择每一行的列是否为真?

我正在通过 JOIN 查询查询两个表,以确定结果集列中的每一行approved是否为TRUE.

SELECT
    `approvals`.`approved`
FROM `sign_ins`
RIGHT JOIN `approvals` ON
    `sign_ins`.`user` = `approvals`.`user`;
Run Code Online (Sandbox Code Playgroud)

这将为每个用户返回一个布尔值的结果集,例如

1
0
0
1
1
Run Code Online (Sandbox Code Playgroud)

我的 PHP 代码遍历这些行,并通过返回 false 并在其中任何一个值为0. 但是,我认为如果不需要遍历结果集,它会更加高效和优化;毕竟,我真的只关心一件事:TRUE如果所有行的approved值都是TRUE; 否则,FALSE

我可以用 MySQL 查询做到这一点吗?

谢谢。

php mysql

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

通过Node.js连接到ElastiCache集群

我对如何通过Node.js连接到AWS的ElastiCache Redis感到困惑.我已成功通过node_redis NPM连接到主要主机(001),但我无法使用ioredis的群集功能,因为显然ElastiCache没有实现CLUSTER命令.

我认为必须有另一种方式,但AWS SDK for Node仅具有管理ElastiCache的命令,而不是实际连接到它.

如果不使用CLUSTER,我担心如果主节点出现故障,我的应用程序将无法进行故障转移,因为我无法回退到其他群集.Error: READONLY You can't write against a read only slave.当主交换机时,我也从我的Redis客户端收到错误,我不知道如何优雅地处理.

我是否想过这个?我发现很少有关于使用Node.js使用ElastiCache Redis集群的信息.

amazon-web-services redis node.js amazon-elasticache redis-cluster

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

是0.0.1有效的semver?

一位同事对模块的第一个版本进行了随意的争论.我们想知道0.0.1是否应该是初始版本.我认为0.1.0是正确的第一个版本,因为0.0.1意味着补丁的增量,而补丁意味着先前的版本.所以根据我的理解,必须有0.0.0.

我浏览了http://semver.org docs,它确实说0.1.0通常是初始版本,但是当主要版本也为0时,我没有看到任何规则反对将次要编号设置为0.

有谁知道0.1.0是最低版本是正式规则,还是只是一个约定?

semantic-versioning

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

有什么实用的方法可以在组件中调用 `React.createContext()` 吗?

假设我想为“手风琴”(一组可折叠面板)创建一个 UI 组件。父组件控制哪些面板打开的状态,而子面板应该能够读取上下文以确定它们是否打开。

const Accordion = ({ children }) => {
  const [openSections, setOpenSections] = useState({})

  const isOpen = sectionId => Boolean(openSections[sectionId])

  const onToggle = sectionId => () =>
    setOpenSections({ ...openSections, [sectionId]: !openSections[sectionId] })

  const context = useMemo(() => createContext(), [])
    // Can't tell children to use *this* context

  return (
    <context.Provider value={useMemo(() => ({ isOpen, onToggle }), [isOpen, onToggle])}>
      {children}
    </context.Provider>
  )
}

const AccordionSection = ({ sectionId, title, children }) => {
  const { isOpen, onToggle } = …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-context

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

即使我使用Content-Disposition:inline,PHP也会强制下载PDF文件

我试图在浏览器中显示PDF - 如果可能的话 - 我知道我可以在Chrome中执行此操作,这是我正在测试的.问题是,每次我尝试时,它都会提示下载.

我正在使用PHP会话,所以我知道有一些无关的标题被发送,所以我打电话header_remove()来重置所有内容.

我将此函数称为显示PDF:

<?php
// For demonstrative purposes
session_start();

if (!isset($_SESSION['auth'])) {
    header('Location: login.php');
    die;
}

/*
 * void viewPDF (Report $report)
 * Outputs the PDF of the report
 */
function viewPDF ($report) {
        // Tell the browser we are going to serve a PDF file.
    $file = dirname(__FILE__).'/../reports/'.$report->id.'.pdf';
        // The location of the PDF
    if (!file_exists($file)) {
        die ('The PDF does not exist.');
            // Somehow the file does not exist.
    }

    header_remove();
        // …
Run Code Online (Sandbox Code Playgroud)

php pdf http-headers

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

PHP/MySQLi - 捕获唯一ID冲突

我想知道是否有一种简单的方法可以检查INSERT语句是否在执行INSERT时由于MySQL字段上的唯一索引而触发冲突.

例如,假设我正在向数据库添加用户,并且username是一个唯一索引:

$sql = new MySQLi(...);
$res = $sql->query('INSERT INTO `users` (`username`) VALUES ("john_galt");');
Run Code Online (Sandbox Code Playgroud)

名为的用户john_galt已存在,因此不会执行INSERT.但是,如何才能以最有意义的错误对用户做出最佳响应(即具有该用户名的用户已经存在;请选择一个唯一的名称.)?

我想到了一些事情,比如检查是否insert_id已设置 - 如果查询生成错误,则不应该这样做.但这个错误可能是任何事情.

类似地,我可以检查是否$sql->error不是空的,除了,这可能是任何东西 - 语法错误,或格式错误的值,或其他什么.显然,我不打算为最终用户打印出实际的MySQL错误.

我能想到的两个解决方案是:

  • 在运行INSERT之前,运行a SELECT TRUE FROM ``users`` WHERE ``username`` = "john_galt";以查看数据库中是否已存在用户名,但我觉得我在该字段中添加了一个唯一约束,这样我就不必这样做了 - 否则就会失败.
  • strpos($sql->error, 'Duplicate entry') === 0 - 看起来非常可怕.

有没有更好的方法来确定使用PHP的MySQLi类?

php mysql mysqli unique-constraint

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

带有本地安装的帆的帆控制台

根据文档,sails lift将始终尝试使用本地安装的 Sails 模块(即app/node_modules/sails)运行您的应用程序。

但是当我运行时sails console,我可以从堆栈跟踪中看到它正在使用全局安装的 Sails 实例:

at runner (/usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/query/validate.js:28:16)
Run Code Online (Sandbox Code Playgroud)

有没有办法强制sails console运行本地安装的 Sails 版本?

sails.js waterline

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