Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Javascript发送和接收表单数据 首先考虑这个问题:_Javascript_Ajax_Perl - Fatal编程技术网

如何通过Javascript发送和接收表单数据 首先考虑这个问题:

如何通过Javascript发送和接收表单数据 首先考虑这个问题:,javascript,ajax,perl,Javascript,Ajax,Perl,这里,Ajax用于打开到服务器的Xhttp通道,并使用post方法将一些数据发送到php脚本文件。我在CGI-bin中有一个perl脚本文件,但这应该也可以 我想通过Javascript将数据发送到Perl脚本,并在不刷新页面的情况下将其接收回来,所以我这样做了: Javascript: var basepath = "localhost"; var req = new XMLHttpRequest(); req.open("POST", basepath+"/perlweb/lox.pl",

这里,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,因为它可以对最终用户的最终结果产生可持续的影响

我想摆脱这个,但我不知道从哪里开始。查找链接让我感到困惑。这似乎是一个完整的规范文档

谁能简单地告诉我该怎么做

我有一个错误:

NS_ERROR_DOM_BAD_URI: Access to restricted URI denied
虽然该文件存在于我自己的机器中(因为该文件存在于我自己的机器中,所以我假设我不会触及CORS问题)


然后是什么导致了问题?

要异步发送,请更改

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

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

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

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


NS\u错误\u DOM\u错误\u URI:拒绝访问受限URI

我建议换衣服

var basepath = "localhost";
要么

var basepath = "http://localhost";  or
var basepath = "/localhost";
因为,如果我没弄错的话,您想在您的机器上打开URL或本地路径,但“localhost”本身可能两者都不是


如果仍然存在此错误,请参见

要异步发送,请更改

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

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

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

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


NS\u错误\u DOM\u错误\u URI:拒绝访问受限URI

我建议换衣服

var basepath = "localhost";
要么

var basepath = "http://localhost";  or
var basepath = "/localhost";
因为,如果我没弄错的话,您想在您的机器上打开URL或本地路径,但“localhost”本身可能两者都不是

如果仍存在此错误,请参阅