小编ham*_*tar的帖子

使用Javascript将大块HTML插入元素的最佳实践?

我正在构建一个Web应用程序(使用原型),需要在DOM中添加大量的HTML.其中大多数是包含具有各种属性的元素的行.

目前,我在变量中保留一行空白的HTML

var blankRow = '<tr><td>'
    +'<a href="{LINK}" onclick="someFunc(\'{STRING}\');">{WORD}</a>'
    +'</td></tr>';

function insertRow(o) {
    newRow = blankRow
        .sub('{LINK}',o.link)
        .sub('{STRING}',o.string)
        .sub('{WORD}',o.word);
    $('tbodyElem').insert( newRow );
}
Run Code Online (Sandbox Code Playgroud)

现在一切顺利,花花公子,但这是最好的做法吗?

当我更新页面上的代码时,我必须更新blankRow中的代码,因此插入的新元素是相同的.当我有40行HTML进入blankRow然后我也必须逃避它时,它变得很糟糕.

有没有更简单的方法?我想到了urlencoding,然后在插入之前解码它,但这仍然意味着一个blankRow和许多转义.

什么意思将是PHP等人的eof函数.

$blankRow = <<<EOF
text
text
EOF;
Run Code Online (Sandbox Code Playgroud)

这意味着没有逃脱但它仍然需要一个blankRow.

你在这种情况下做了什么?

解决了

在原型中使用DOMBuilder结束.不需要其他库:

$w('a div p span img table thead td th tr tbody tfoot input').each(function(e) {
        window['$' + e] = function() {
            return new Element(e, arguments[0]);
        }
});

newPart = $div({id: 'partition-4'})
    .insert( $p()
        .insert('<b>Stuff</b>')
    )
    .insert( $p({
        id: 'a-p'})
        .insert('<b>More stuff</b>')
    );

$('parentDiv').insert(newPart);
Run Code Online (Sandbox Code Playgroud)

见我的解决方案 …

html javascript ajax dom

18
推荐指数
2
解决办法
8123
查看次数

Oracle SQL PLS-00049:错误的绑定变量

我收到这个错误,这似乎是列拼写的问题.但是我百分之九十九确定我拼写了一切正确,但我看不出有任何理由得到我做的错误...

这是来源:

CREATE OR REPLACE TRIGGER update_qoh_trigger
    AFTER INSERT ON sales
    FOR EACH ROW
DECLARE
    v_qoh products.qoh%TYPE;
    v_new_qoh products.qoh%TYPE;
BEGIN
    SELECT qoh INTO v_qoh
    FROM products
    WHERE id = :new.product_id;

    v_new_qoh := v_qoh - new.quantity; // ERROR HERE

    UPDATE products
    SET qoh = :v_new_qoh
    WHERE id = :new.product_id;
END;
/
sho err
Run Code Online (Sandbox Code Playgroud)

这给了一个:

12/12 PLS-00049: bad bind variable 'V_NEW_QOH' 
Run Code Online (Sandbox Code Playgroud)

我尝试用以下组合替换第12行:

  • v_new_qoh := :v_qoh - :new.quantity;
  • :v_new_qoh := :v_qoh - :new.quantity;
  • :v_new_qoh = :v_qoh - :new.quantity;
  • :v_new_qoh := v_qoh - :new.quantity; …

sql oracle

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

内容处理:内联标题不会内嵌图像?

我正试图在页面上显示内嵌图像.它由一个codeigniter控制器提供服务.

class Asset extends MY_Controller {

    function index( $folder, $file ) {

        $asset = "assets/$folder/$file";

        if ( !file_exists( $asset ) ) {
            show_404();
            return;
        }

        switch ( $folder ) {
        case 'css':
            header('Content-type: text/css');
            break;
        case 'js':
            header('Content-type: text/javascript');
            break;
        case 'images':
            $ext = substr( $file, strrpos($file, '.') );
            switch ( $ext ) {
            case 'jpg':
                $ext = 'jpeg';
                break;
            case 'svg':
                $ext = 'svg+xml';
                break;
            }

            header('Content-Disposition: inline');
            header('Content-type: image/'.$ext);
        }

        readfile( $asset );
    }

}
Run Code Online (Sandbox Code Playgroud)

当我在Chrome的VC中加载图像时,会弹出下载窗口.我知道当浏览器无法显示内联内容时,无论如何都会强制下载,但这些是PNG和GIF图像,否则会在浏览器中显示.在IE中它不强制下载,但它以ASCII显示图像.

如果我注释掉整个图像的情况,FF和Chrome都会显示ASCII而不是图像.

我认为设置内容类型将允许FF和Chrome显示实际图像,并允许该位置用作src. …

php codeigniter image content-disposition http-headers

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

从PHP写入stdin?

在linux中我想从PHP运行一个gnome zenity进度条窗口.zenity如何工作是这样的:

linux-shell$ zenity --display 0:1 --progress --text='Backing up' --percentage=0
10
50
100
Run Code Online (Sandbox Code Playgroud)

因此第一个命令以0%打开zenity进度条.Zenity然后将标准输入数字作为进度条百分比(因此当您输入这些数字时,它将从10%变为50%到100%).

我无法弄清楚如何让PHP输入这些数字,我试过:

exec($cmd);
echo 10;
echo 50;
Run Code Online (Sandbox Code Playgroud)

和:

$handle = popen( $cmd, 'w' );
fwrite( $handle, 10 );
Run Code Online (Sandbox Code Playgroud)

和:

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w")  // stdout is a pipe that the child will write to
);

$h = proc_open($cmd, $descriptorspec, $pipes);

fwrite($pipes[1], 10);
Run Code Online (Sandbox Code Playgroud)

但是没有一个更新进度条.在什么方面我可以模仿stdin对linux shell的影响来获得zenity来更新它的进度条?

php linux gnome stdio zenity

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

使用另一个对象属性值作为属性名称将属性分配给JS对象

我想使用objects属性的值来命名另一个对象的属性.在PHP中很容易做到:

$object1->property = 'name';
$object2->{$object1->property} = "value";
echo $object2->name; //outputs "value"
Run Code Online (Sandbox Code Playgroud)

但在Javascript中我无法弄清楚如何做到这一点.花括号以不同的方式使用.

有人知道javascript中的PHP等价物吗?

谢谢 :)

javascript oop object

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

使用PHP Curl获取页面时出现400 Bad Request

当我尝试用curl获取它时,我不断从hotfile.com页面获得400个错误的请求代码.

  1. 我可以在浏览器中使页面正常
  2. 脚本中的第一个(登录)(post)请求有效
  3. for循环中的最后一个(get)请求有效
  4. 我已经尝试将curl标头设置为我的浏览器发送的相同标头
  5. 我尝试过两次请求之间的睡眠时间长达5秒,没有区别

问题是for循环中的所有curl get请求都返回400个错误请求,除了最后一个对我来说很奇怪的请求.

这是脚本的链接:http : //pastie.org/627436 我正在使用Sean Hubers卷曲包装器:http://github.com/shuber/curl以及SimpleHMTLDOM:http://simplehtmldom.sourceforge.net/

除非您有一个hotfile帐户,否则人们可能很难尝试,因为该脚本无法在非注册帐户上运行.

提前干杯:)

php post curl get http-status-codes

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

ErrorLoadingRVMRC - 为 Rails 应用程序运行乘客时不信任 rvmrc 文件

我已经在这件事上黑了几个小时,突然凌晨 4 点,我没有进一步了。

这是一个 Rails 3 应用程序。

我有 cap deploy 工作,我有一个 gemset,站点已部署,bundle 已将我需要的 gem 安装到 gemset 中。我已经安装了乘客。我在多用户 RVM 上运行。

我已经完成了,passenger start但它给了我这个关于不被信任的错误:

The rvmrc located in '/var/www/html/xx/releases/20111212035754' 
could not be loaded, likely due to trust mechanisms. Please run 'rvm rvmrc 
{trust,untrust} "/var/www/html/xx/releases/20111212035754"' to 
continue, or set rvm_trust_rvmrcs_flag to 1. (RVM::ErrorLoadingRVMRC)
Run Code Online (Sandbox Code Playgroud)

我试过:

  • 在 .rvmrc 中将 rvm_trust_rvmrcs_flag 设置为 1
  • 运行指定的命令
  • 将 rvm 升级到头部
  • 将 rvm 升级到最新
  • 添加了 setup_load_paths.rb 文件
  • 生成的 .rvmrc rvm use 1.9.3@captor --create --rvmrc

我现在不知所措。我已经在这里粘贴了我的配置文件/输出,如果有人发现拼写错误,我会很高兴的 :)

应该不会这么难吧?我错过了什么? …

ruby ruby-on-rails passenger rvm

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