如何通过Javascript

时间:2015-06-05 00:48:19

标签: javascript ajax perl

首先考虑一下:StackoverFlow link

这里,Ajax用于向服务器打开Xhttp通道,并使用post方法将一些数据发送到php脚本文件。我在CGI-bin中有一个perl脚本文件,但这也应该有用。

我想通过Javascript将数据发送到Perl脚本,并在没有页面刷新的情况下接收它,所以我这样做了:

使用Javascript:

var basepath = "localhost";
var req = new XMLHttpRequest();

req.open("POST", basepath+"/perlweb/lox.pl", false);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.send("script="+this.script);

req.onreadystatechange = function(){     
    // execute this when ready state changes, i.e. server responds
    if (req.readyState == 4 && req.Status == 200) {
        // we got what we wanted
        console.log(req.responseText);
    }
}

lox.pl是我的脚本名称。它位于localhost下的/ perlweb中。

我在名称test.pl:

的同一个地方创建了这个文件
#! /path/to/perl
print "Content-type: text/plain\n\n";
print "it now works\n";

使用/localhost/perlweb/test.pl调用此方法会产生预期的输出。所以我觉得perl也准备好了。

现在,回到javascript我有两件事:

我有这个警告:

Synchrone XMLHttpRequests am Haupt-Thread sollte nicht mehr verwendet werden, weil es nachteilige Effekte für das Erlebnis der Endbenutzer hat. Für weitere Hilfe siehe http://xhr.spec.whatwg.org/ 

转换为:不应再使用主线程中的同步XMLHttpRequest,因为它可以为最终用户的最终结果提供可持续的效果(?? sic)。

我想摆脱这个,但我不知道,从哪里开始。查找链接xhr.spec.whatwg.org令我感到困惑。这似乎是一份完整的规范文件。

有人可以简单地指出我应该做什么吗?

我有这个错误:

NS_ERROR_DOM_BAD_URI: Access to restricted URI denied

虽然该文件存在于我自己的机器中(因为该文件存在于我自己的机器中,我假设我不会遇到CORS问题)。

然后导致问题的原因是什么?

1 个答案:

答案 0 :(得分:4)

要异步发送,请更改

req.open("POST", basepath+"/perlweb/lox.pl", false); // false - sync

req.open("POST", basepath+"/perlweb/lox.pl", true);  // true - async
  

async - 一个可选的布尔参数,默认为true,指示是否异步执行操作。如果此值为false,则send()方法在收到响应之前不会返回。 (Ref

     

注意:从Gecko 30.0(Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已被弃用。

这就是为什么你收到警告“不应再使用主线程中的同步XMLHttpRequest”。

  

NS_ERROR_DOM_BAD_URI:访问受限制的URI被拒绝

我建议改变

var basepath = "localhost";

var basepath = "http://localhost";  or
var basepath = "/localhost";

因为,如果我没有弄错,你想在你的机器上打开一个URL或一个本地路径,但“localhost”本身可能都不是。

如果您仍然遇到此错误,请参阅"NS_ERROR_DOM_BAD_URI: Access to restricted URI denied"

相关问题