小编Cha*_*son的帖子

使用Uploadify时为什么会丢失一些POST数据?

在过去的几个月里,我一直在我的PHP应用程序中使用Uploadify,而且我一直试图找出一个难以捉摸的bug.当发生致命错误时,我会收到电子邮件,并且它们为我提供了大量详细信息.我收到了几十个.但是,我没有能够自己重现这个问题.有些用户(比如我自己)没有遇到任何问题,而其他用户则有.

在我提出问题的细节之前,这是流程.

  • 用户访问我正在使用的CMS中的页面的编辑屏幕.
  • 页面的记录ID作为隐藏值放入表单中.
  • 用户单击Uploadify浏览按钮并选择一个文件(仅允许单个文件选择).
  • 用户单击表单的"提交"按钮.
  • jQuery拦截表单提交操作,触发Uploadify开始上传,并为提交操作返回false(手动取消表单提交事件,以便Uploadify可以接管).
  • 将上传上传到自定义流程脚本.
  • Uploadify完成上传并触发Javascript完成回调.
  • Javascript回调调用$('#myForm').submit()来提交表单.

现在这就应该发生了.我收到上传冻结率为100%的报告以及其他显示"I/O错误"的报告.

发生了什么,表单是使用完成回调提交的,但表单中存在的一些帖子参数根本不在帖子数据中.页面的id,我之前说的是作为隐藏字段添加到表单中,在post数据($ _POST)中根本不存在 - $ _POST数组中没有'id'项.奇怪的是,帖子数据DOES包含某些字段的值.例如,我有一个名为"name"的文本输入,用于记录名称,它确实显示在帖子数据中.

这是我收集的内容:

  • 这在Mac OSX 10.5和10.6,Windows XP和Windows 7上已经发生.如果有帮助,我可以发布确切的用户代理字符串.
  • 用户必须使用Flash 10.0.12或更高版本.我们已经做到了这样,如果表单<10.0.12,表单将恢复使用正常的"文件"字段.

有没有人有任何想法可能是什么原因?

php flash upload uploadify

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

在 MySQL 中删除之前检查外键引用的方法?

我正在使用内容管理系统,在删除记录之前,系统会提示用户确认屏幕。有些记录是其他表中引用的外键,因此无法删除。

如果给定记录具有外键引用,我想在给定记录旁边显示一条消息。要知道是否应该显示记录的消息,我可以查询引用表并查看是否有引用。但问题是,大约有十几个表的记录可能引用该记录,并且查找可能需要“很长”的时间。

有没有一种简单的方法来判断记录是否已准备好删除(即没有外键引用)?

mysql foreign-keys

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

XML 数据和 XML 元数据有什么区别?

我正在重建一些 XML 提要,所以我正在研究何时使用元素以及何时使用 XML 的属性。

一些网站说“数据在元素中,元数据在属性中”。

那么,两者有什么区别呢?

让我们以W3Schools为例:

<note date="12/11/2002">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>
Run Code Online (Sandbox Code Playgroud)

日期是否应该保留为 note 元素的属性?还是进入它自己的元素更有意义?

<date>12/11/2002</date>
Run Code Online (Sandbox Code Playgroud)

或者,将它分成多个元素是否有意义?

<date>
  <day>12</day>
  <month>11</month>
  <year>2002</year>
</date>
Run Code Online (Sandbox Code Playgroud)

xml metadata

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

通过浏览器而不是控制台使用Rails跟踪/ BPT陷阱

我编写了一个使用Subversion Ruby绑定的Rails应用程序.我编写了适配器类来使它们适应我喜欢的界面.

在将我的项目升级到Rails 3并重新编译Ruby 1.9.2的SVN绑定之后,我可以转到调试控制台并像以前一样运行require'svn/core/ext'而没有任何问题.但是,当我的适配器(也运行需要'svn/ext/core')被包含时,我得到了Trace/BPT陷阱.

总而言之,我在使用Webrick运行我的应用程序并通过浏览器连接时获得了Trace/BPT陷阱,但我没有通过控制台验证错误.

任何想法为什么或如何调试这个?日志根本没有显示任何内容.

ruby ruby-on-rails ruby-on-rails-3

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

如何在Rails中调试Trace/BPT Trap错误?

如何在Rails中调试Trace/BPT陷阱错误?我没有日志输出,没有服务器输出......没有.

ruby debugging ruby-on-rails ruby-on-rails-3

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

如何使Angular指令等待隔离范围数据可用?

我有一个控制器,可以从我的API加载数据.不幸的是,我有一个场景,我不能使用解决方案来加载数据.

angular.module('myApp').controller('myController', function() {
    var myController = this;

    formService.find('123').then(function(response) {
        myController.formData = response.data;
    });
});
Run Code Online (Sandbox Code Playgroud)

我的控制器模板然后使用一个使用此数据的指令:

<form-component form-data="myController.formData"></form-component>
Run Code Online (Sandbox Code Playgroud)

指令:

angular.module('myApp').directive('formComponent', function() {
    'use strict';

    return {
        restrict: 'E',
        scope: {
            formData: '=',
        },
        templateUrl: 'formComponent.html',
        link: function($scope, element, attrs) {
            // Outputs "undefined" as this is not yet loaded when
            // this directive runs.
            console.log($scope.formData);
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

如您所见,当指令运行时,API尚未返回数据,因此访问时未定义$ scope.formData.

是否有一种方法可以优雅地使我的指令只在数据可用时才开始对数据起作用?我可以想到几个解决方案,但我对任何一个都不满意:

  1. 广播指示数据已加载的事件.
  2. 在指令中放置$ watch,然后在监视回调运行时取消绑定监视.

javascript angularjs angularjs-directive

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

如何在JavaScript中创建此对象的键/值的所有组合?

我有以下JavaScript对象结构:

var options = {
    optionOne: [true, false],
    optionTwo: [true, false],
    optionThree: [
        null,
        {property1: 9, property2: 7},
        {property1: 4, property2: 12},
        {property1: 16, property2: 14}
    ]
};
Run Code Online (Sandbox Code Playgroud)

请注意,此对象中的键/对数量会有所不同.因此,有可能实际上是optionFour,optionFive等,以及每个选项可以有它的数组值的任何数量或类型.

我需要迭代这个对象并创建一个包含所有可能选项组合的对象的数组:

[
    {optionOne: true,  optionTwo, true,  optionThree: null},
    {optionOne: false, optionTwo, true,  optionThree: null},
    {optionOne: true,  optionTwo, false, optionThree: null},
    {optionOne: false, optionTwo, false, optionThree: null},
    {optionOne: true,  optionTwo, true,  optionThree: {property1: 9, property2: 7}},
    {optionOne: false, optionTwo, true,  optionThree: {property1: 9, property2: 7}},
    {optionOne: true,  optionTwo, …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm recursion combinations permutation

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

将变量传递给车把助手调用

我想将模板数据传递给我定义的"textfield"辅助方法,如下所示:

{{textfield label="{{label}}"
            id="account_{{attributes.id}}"
            name="account[{{attributes.name}}]"
            class="some-class"
            required="true"}}
Run Code Online (Sandbox Code Playgroud)

(注意{{textfield}}帮助程序调用中的{{label}}和{{attributes.id}}引用)

这是我设置模板的地方:

data = {
  "attributes": {
    "id": "name",
    "name": "name"
  },
  "label": "Name"
}
var templateHtml = 'markup here';
var template = Handlebars.compile(templateHtml);
var formHtml = template(data);
Run Code Online (Sandbox Code Playgroud)

这是一个jsFiddle.

当我运行它时,我仍然在编译的标记中看到{{placeholders}}.

我怎么能做到这一点?

javascript templating handlebars.js

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

如何在Node中注册和使用Handlebars助手?

我正在使用带有Node的Handlebars,这很好用:

require('handlebars');
var template = require('./templates/test-template.handlebars');
var markup = template({ 'some': 'data' });
console.log(markup);
Run Code Online (Sandbox Code Playgroud)

这很好.但是,我需要在模板中注册并使用自定义帮助程序.所以,现在我的代码看起来像这样:

var Handlebars = require('handlebars');

Handlebars.registerHelper('ifEqual', function(attribute, value) {
    if (attribute == value) {
        return options.fn(this);
    }
    else {
        return options.inverse(this);
    }
});

var template = require('./templates/test-template.handlebars');
var markup = template({ 'some': 'data' });
console.log(markup);
Run Code Online (Sandbox Code Playgroud)

但现在当我运行我的脚本时,我得到了

错误:缺少助手:'ifEqual'

那么:如何在Node中定义和使用自定义助手?

javascript node.js handlebars.js

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

如何使用 JavaScript 与第三方网页交互?

我的公司有一个大量使用 JavaScript(基于 Backbone)的网站,该网站位于我无法控制的外部域中。我想自动化一些任务。基本上我想点击一些东西,填写一些表单字段,然后提交一个按钮。但是,我还希望能够进行逻辑测试并根据页面中的各种状态在字段中输入不同的值。

我知道我可以使用 Selenium 来实现此目的,但是有其他选择吗?也许是一个纯 JavaScript 解决方案?

例如,如果我能做到这一点,那就太好了:

$('#someButton').click();

if (parseInt($('#someDiv').text()) > x) {
    $('#someField').val(123);
    someCounter++;
}

$('#submitButton').click();
Run Code Online (Sandbox Code Playgroud)

即使我可以将自定义 JavaScript 注入到网页中……那也可以工作。

javascript automation

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