小编Mil*_*les的帖子

POST方法在npm http-server上抛出错误405

我试图在本地http服务器上发出一个Ajax请求来运行php文件.我Error 405: method not allowed在浏览器控制台中找到了一个.

我试过一些类似问题的答案无济于事.我正在使用npm http-server来托管这个.我已经尝试在http服务器上启用CORS,但这并没有解决问题.

我可以将我的问题缩小到以下代码(使用此处给出的答案).

/test.html:

<html>
    <head>
        <title>Button</title>
        <meta charset="utf-8">
        <!-- jQuery -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>  
    </head>
    <body>
        <button type="button">Click Me</button>
        <p></p>
        <script type="text/javascript">
            $(document).ready(function(){
                $("button").click(function(){
                    $.ajax({
                        method: 'POST',
                        url: 'echo.php',
                        success: function(data) {
                            alert(data);
                            $("p").text(data);

                        }
                    });
                });
            });
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

/echo.php:

<?php
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
    header('Access-Control-Allow-Headers: Content-Type, Accept');
    echo "HELLO WORLD";
?>
Run Code Online (Sandbox Code Playgroud)

我使用http-serverfrom 启动服务器npm.当我尝试发出POST请求(即单击按钮)时,我在服务器日志中收到以下错误:

[...] "POST /echo.php" Error (404): "Not found"
Run Code Online (Sandbox Code Playgroud)

echo.php …

javascript ajax jquery node.js npm

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

vim:基于一个 :global 命令运行多个命令

抱歉,如果这已经发布了,因为即使在 vim wiki 上我也找不到答案。

有没有一种方法可以在 vim 命令行模式下通过一次:g搜索运行多个命令?

例如,

:%g/foo/ s/bar/\=@a/g | exe "norm /cat\<enter>\"ayiw"
Run Code Online (Sandbox Code Playgroud)

哪个(对于我打算这样做)应该在匹配的每一行上用 register 的内容foo替换,然后找到下一个迭代(即使它前面有很多行),并将周围的单词放入 register 。baracata

相反,此特定语法使用初始a寄存器的当前内容完成替换命令,然后在单行上执行正常模式命令(在替换完成后)。

此示例不是我的特定用例,而是显示了此功能有用的一个实例。我意识到我可以把它全部放在一个exe,即 ,%g/foo/exe "norm :s/bar/\\=@a/g\<enter>/cat\<enter>\"ayiw"但我想用第一种方式来做,因为我觉得它更灵活。


我更喜欢使用 vanilla vim 来做到这一点,但如果存在一个插件,这是一个不错的选择。有谁知道是否有语法来做这样的事情?

vi vim ex

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

Bash:将所有参数完全按原样传递给函数,并在每个参数上添加一个标记

这似乎是一个相对基本的问题,但经过一个小时的搜索,我无法在任何地方找到它.许多(有很多!)类似的问题似乎没有达到目的.

我正在写一个脚本("vims")在类似sed的模式下使用vim(所以我可以在流输入上调用普通的vim命令而不实际打开vim),所以我需要将每个参数传递给vim,并带有" - c"前面的旗帜.还有许多字符需要转义(我需要传递正则表达式),因此SO上的一些常用方法不起作用.

基本上,当我写:

cat myfile.txt | vims ':%g/foo/exe "norm yyPImyfile: \<esc>\$dF,"' ':3p'
Run Code Online (Sandbox Code Playgroud)

这是两个在stdout上运行的命令行vim参数,我需要将这两个单引号参数完全按照它们的方式传递给我的函数vims(),然后用一个-c标志标记它们,所以它们被解释为命令VIM.

这是我到目前为止所尝试的:

vims() {                                                                            
    vim - -nes -u NONE -c '$1' -c ':q!' | tail -n +2              
}   
Run Code Online (Sandbox Code Playgroud)

这似乎适用于单个命令.没有字符被转义,并且"-c"标志就在那里.

然后,使用经常复制的问答,"$@"诀窍,我试过:

vims() {
    vim - -nes -u NONE $(for arg in "$@"; do echo -n " -c $arg "; done) -c ':q!' | tail -n +2
}
Run Code Online (Sandbox Code Playgroud)

这似乎打破了我传递的每个字符串中的空格,所以不起作用.我也尝试了一些printf命令的变体,正如其他问题中所建议的那样,但这与vim命令序列有奇怪的交互.我在永久编辑测试循环中尝试了许多其他不同的反斜杠引用组合,但总是在我的方法中找到了一个怪癖.

我错过的命令序列是什么?

regex unix vim bash

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

标签 统计

vim ×2

ajax ×1

bash ×1

ex ×1

javascript ×1

jquery ×1

node.js ×1

npm ×1

regex ×1

unix ×1

vi ×1