[英]How to send and receive Form Data by Javascript
首先考慮一下: 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,因為它可能對最終用戶的最終結果產生可持續的影響。
我想擺脫這個問題,但是我不知道從哪里開始。 查找鏈接xhr.spec.whatwg.org使我感到困惑。 這似乎是完整的規范文檔。
有人可以簡單地指出我應該做的事情嗎?
我有這個錯誤:
NS_ERROR_DOM_BAD_URI: Access to restricted URI denied
盡管該文件存在於我自己的計算機中(因為該文件存在於我自己的計算機中,所以我假設我不會遇到CORS問題)。
那是什么引起了問題呢?
要異步發送,請更改
req.open("POST", basepath+"/perlweb/lox.pl", false); // false - sync
至
req.open("POST", basepath+"/perlweb/lox.pl", true); // true - async
async-可選的布爾參數,默認為true,指示是否異步執行操作。 如果該值為false,則send()方法在接收到響應之前不會返回。 ( 參考 )
注意:從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:拒絕訪問受限制的URI”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.