1、伺服器返回的數據,該怎麼接收
第一個問題:先搞清ajax的底層通信形式,ajax發出請求後等待回復,也就是監聽某個信息埠,伺服器接到請求後,發送結果,也就是向某個埠寫信息,所以,不管在形式上編程上有什麼不同,都是向這個ajax所在地的信息埠輸出信息。
2、大家好:從伺服器返回一個參照,什麼意思
當我們運行軟體的時候經常會跳出這個錯誤,究其原因是UAC(用戶賬戶控制)許可權問題。
以下幾種解決辦法:
一、隨機應變法
1.以管理員的身份運行:這是解決此問題最簡單也是最有效果的一種方法,出現「從伺服器返回一個參照」是因為可執行文件沒有許可權所致,以管理員身份運行,給予它最高許可權,自然可以解決這個問題。
2.如果每次都是以管理員身份運行可能很多用戶覺得很麻煩,如果你經常使用這個軟體的話,可以配置打開方式,使它每次打開的方式都是以管理員身份運行,具體方法,右鍵點擊執行文件,選擇屬性,點擊兼容性選項卡,最下邊有個特權等級,勾選即可。
二、一勞永逸法
更改策略組:這應該是網上流傳最多的解決辦法,但是操作過程十分簡單,使得很多新手朋友摸不著頭腦,小編就詳細的介紹下此方法(沒有親自驗證,不知道是否真能夠解決),首先應該打開cmd,win7下的快捷方式是win+R(其中win是我們打開開始菜單經常使用的那個鍵)。
接著在輸入框中輸入gpedit.msc,點擊確定我們便來到了本地策略組,此步大部分教程還是介紹到了,很多人也能找的到,但是以後的步驟便很簡單了,使得眾多用戶摸不著頭腦,下面小編詳細的介紹一下,點擊計算機配置,windows設置,然後點擊安全設置(很多人找不到安全設置在那)。
安全設置下也有很多選項,我們找到本地策略,展開它,找到安全選項,這裡面的東西才是我們今天的主角,怎麼樣,教程夠詳細了吧,詳細大家都能找的到了,不過此方法是以win7為基礎的,vista可能略有不同。
然後我們找到用戶賬戶控制選擇項,然後找到用戶賬戶控制:只提升簽名並驗證的可執行文件(用戶賬戶控制的最後一個選項),然後雙擊選擇禁用即可,至此更改策略組的方法至此結束。
控制面板法:我們打開控制面板(相信大家都找的到吧),然後找到用戶賬戶和家庭安全選項,然後點擊用戶賬戶,來到用戶賬戶設置界面。然後找到「更改用戶賬戶控制設置」,點擊它。
然後會打開一個面板,這就是我們需要的,默認的是程序嘗試更改我的計算機的時候提示,我們把它改成從不通知即可(此方法和更改策略組的方法小編均沒有測試過,只是因為網上盛傳故在此列出)。
注意事項
一勞永逸法小編沒有親自測試過,是網路中盛傳的兩種方法,故在此列出來。
WIN7和VISTA這種安全系數比較高的操作系統都啟用的UAC,因此很多軟體運行都有局限性,如果不想關閉可以每次以管理員身份運行即可,如果嫌麻煩可以關閉UAC。
本經驗是以win7操作系統為例子,vista或許略有不同,如不解決可以網路vista的解決辦法。
3、html如何處理伺服器返回的消息
Ajax,很流行的
下面的代碼請保存為html後調試,在關鍵的地方我已經用中文解釋過了。調試時要注意:
1.把兩個form的action=""里URL改成你要提交的頁面,否則,post提交方法會出錯。
2.把兩個Form里的<input><select>等控制項改成你要提交頁面所必須的控制項,現在的只是示例。
3.代碼有點長,測試的時候要耐心,容易出錯
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>AJAX Form Submit Test</title>
<script>
function $(objId) {
return document.getElementById(objId);
}
function AjaxFormer (form, resultDivId) {
this.form = form;
this.resultDivId = resultDivId;
this.ajaxSubmitForm = function() {
var elements = form.elements;// Enumeration the form elements
var element;
var i;
var postContent = "";// Form contents need to submit
for(i=0;i<elements.length;++i) {
var element=elements[i];
if(element.type=="text" || element.type=="textarea" || element.type=="hidden") {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";
}
else if(element.type=="select-one"||element.type=="select-multiple") {
var options=element.options,j,item;
for(j=0;j<options.length;++j){
item=options[j];
if(item.selected) {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(item.value) + "&";
}
}
} else if(element.type=="checkbox"||element.type=="radio") {
if(element.checked) {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";
}
} else if(element.type=="file") {
if(element.value != "") {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";
}
} else {
postContent += encodeURIComponent(element.name) + "=" + encodeURIComponent(element.value) + "&";
}
}
this.ajaxSubmit(form.action, form.method, postContent, resultDivId);
}
this.ajaxSubmit = function(url, method, postContent, resultDivId)
{
var loadingDiv = document.getElementById('loading');
if(!loadingDiv) {
loadingDiv = document.createElement("div");
loadingDiv.id = "loading";
loadingDiv.style.border="1px solid #008800";
document.body.appendChild(loadingDiv);
}
// call in new thread to allow ui to update
window.setTimeout(function () {
loadingDiv.innerHTML = "<img src='./images/loading.gif'/>Loading....";
loadingDiv.style.display = "";
}, 1);
// code for Mozilla, etc.
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
// code for IE
else if (window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if(xmlhttp) {
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4)
{
try {
if(xmlhttp.status==200) {
if(resultDivId) {
$(resultDivId).innerHTML = xmlhttp.responseText;
//如果用的post的提交方法請改這里。上面一句是提交後的HTML語句,具體的請看下面get的修改方法
} else {
var result = document.createElement("DIV");
result.style.border="1px solid #363636";
result.innerHTML = xmlhttp.responseText;
//如果用的get的提交方法請改這里(注意:上面用post提交方法的修改方法和這里的一樣)。上面這一行是獲取提交後頁面HTML的語句,你可以把上面這句去掉,那麼在頁面上就不會出現結果頁面了(不影響結果的判斷)
//當你把上面那句改成:result.innerText = xmlhttp.responseText;
//那顯示的結果就是HTML語句了
//你可以在xmlhttp.responseText里查找登陸成功的字元串,比如登陸成功後往往會顯示「登陸成功」,登陸失敗會顯示「密碼不正確」
//那麼用if(xmlhttp.responseText.indexOf("登陸成功") > 0)來判斷是否有「登陸成功」的字元就可以判斷是否成功了
//下面注釋掉的就是來判斷是否登陸成功的,你按情況來改吧,運行的時候注意把注釋符號去掉
/*
if(xmlhttp.responseText.indexOf("登陸成功") > 0)
{
alert("登陸成功");
}
else
alert("登陸失敗");
*/
//
document.body.appendChild(result);
}
if(xmlhttp.getResponseHeader("response_script")) {
eval(unescape(xmlhttp.getResponseHeader("response_script")));
}
loadingDiv.innerHTML =
"<img src='/images/good.gif'/>Submit finnished!";
}
else {
loadingDiv.innerHTML = "There is something wrong with form submit! ".fontcolor("red")
+ xmlhttp.status + "=" + xmlhttp.statusText;
}
} catch(exception) {
loadingDiv.innerHTML = "There is something wrong with form submit! ".fontcolor("red")
+ exception;
}
}
};
if(method.toLowerCase() == "get") {
xmlhttp.open("GET", url + "?" + postContent, true);
xmlhttp.send(null);
} else if(method.toLowerCase() == "post") {
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(postContent);
}
} else {
loadingDiv.innerHTML =
"Can't create XMLHttpRequest object, please check your web browser.";
}
}
}
// }}} end of common utils methods
</script>
</head>
<body>
提交方式: POST<br>
<form method="POST" id="form1" name="form1"
action="http://www.baidu.com"
onSubmit="former.ajaxSubmitForm();return false;">
<p><input type="hidden" name="hidden1" value="hiddenValue">
text:<input type="text" name="textf&1" size="20" value="text文本&1">
checkbox:<input type="checkbox" name="checkbox1" value="ON" checked>
radio:<input type="radio" value="V1" checked name="radio1">
select:<select size="1" name="select1">
<option selected value="option1">D1</option>
</select>
<br>
<br>
<input type="submit" name="B1" value="submit">
<input type="reset" name="B2" value="reset">
</p>
</form>
<br><br><br><br><br>
提交方式: GET<br>
<form method="GET" id="form2" name="form2"
action="http://www.baidu.com"
onSubmit="former2.ajaxSubmitForm();return false;">
<p><input type="hidden" name="hidden1" value="hiddenValue">
text:<input type="text" name="text文本&2" size="20" value="text文本&2">
checkbox:<input type="checkbox" name="checkbox1" value="ON" checked>
radio:<input type="radio" value="V1" checked name="radio1">
select:<select size="1" name="select1">
<option selected value="option1">D1</option>
</select>
<br>
<br>
<input type="submit" name="B1" value="submit">
<input type="reset" name="B2" value="reset">
</p>
</form>
<div id="loading" style="display:none; position:absolute;
border:1px solid orange; height:20px; width:600; left: 93px; top: 112px;
background-color: #FFFFCC; cursor:pointer;" title="Click to hide" onClick="this.style.display='none';"></div>
<div id="resultDiv" style="border:1px solid orange; background-color: #FFFFCC; cursor:pointer;" title="Click to hide" onClick="this.style.display='none';">
Form 1 的提交結果將會顯示在這里.
</div>
<script type="text/javascript">
var former = new AjaxFormer($('form1'), 'resultDiv');
var former2 = new AjaxFormer($('form2'));
</script>
</body>
</html>
4、伺服器返回503 代碼怎麼辦?
503是一種HTTP狀態碼,是伺服器出錯的一種返回狀態,由於臨時的伺服器維護或者過載,伺服器當前無法處理請求。這個狀況是臨時的,並且將在一段時間以後恢復。伺服器返回503主要通過一下方法解決:
首先要檢查你是否關閉了應用程序池。每個網站都對應了一個應用程序池(IIS伺服器是如此),當然他們可能是相同的應用程序池,也能是不同的,查看出現503錯誤網站對應的程序池是否開啟。
如果沒有關閉應用程序池,那就要看看是否請求到達時應用程序池隊列已滿。每個網站都有其最大的負載量,當訪問請求達到這個值的時候就會出現503錯誤,解決辦法可以加大請求隊列,默認值為1000。
還有一種可能,應用程序池標識沒有使用預定義賬戶:網路服務,而自己配置了標識,但是配置的這個用戶不屬於IIS_WPG組,遇到這種情況,可以改變網站的 應用程序池路徑,把它改為屬於IIS_WPG組的應用程序池。
還有就是CPU佔用率太高,而且應用程序池啟用了CPU監視,設置了CPU利用率超過一定百分比關閉應用程序池,而開發人員寫的服務端頁面(.asp,.aspx)執行效率不高,會引起CPU的長時間佔用,最終達到設置的百分比,從而引起應用程序池關閉。遇到此種情況可以重新啟動應用程序池即可。
5、會顯示出伺服器返回錯誤,怎麼破
503是一種HTTP狀態碼,是伺服器出錯的一種返回狀態,由於臨時的伺服器維護或者過載,伺服器當前無法處理請求。這個狀況是臨時的,並且將在一段時間以後恢復。伺服器返回503主要通過一下方法解決:
首先要檢查你是否關閉了應用程序池。每個網站都對應了一個應用程序池(IIS伺服器是如此),當然他們可能是相同的應用程序池,也能是不同的,查看出現503錯誤網站對應的程序池是否開啟。
如果沒有關閉應用程序池,那就要看看是否請求到達時應用程序池隊列已滿。每個網站都有其最大的負載量,當訪問請求達到這個值的時候就會出現503錯誤,解決辦法可以加大請求隊列,默認值為1000。
還有一種可能,應用程序池標識沒有使用預定義賬戶:網路服務,而自己配置了標識,但是配置的這個用戶不屬於IIS_WPG組,遇到這種情況,可以改變網站的 應用程序池路徑,把它改為屬於IIS_WPG組的應用程序池。
還有就是CPU佔用率太高,而且應用程序池啟用了CPU監視,設置了CPU利用率超過一定百分比關閉應用程序池,而開發人員寫的服務端頁面(.asp,.aspx)執行效率不高,會引起CPU的長時間佔用,最終達到設置的百分比,從而引起應用程序池關閉。遇到此種情況可以重新啟動應用程序池即可。
6、什麼叫伺服器返回錯誤
就是向伺服器發送請求,伺服器返回的數據是錯誤的,或者是沒有數據返回。
7、運行程序顯示「從伺服器返回一個參照」怎麼辦
方法一、
1、以管理員身份運行,出現「從伺服器返回一個參照」是因為可執行文件沒有許可權導致的,所以給予它最高許可權,這樣就可以解決問題了。
如何解決win7運行程序時顯示「從伺服器返回一個參照」 三聯
2、如果你經常使用這個軟體的話,可以配置打開方式,比較方便,這樣它就可以每次打開的方式都是以管理員身份運行了,方法是滑鼠右擊執行文件,然後選擇「屬性」,在「兼容性」選項卡中,然後在特權等級下勾選「以管理員身份運行此程序」,點擊確定退出即可。
方法二、
1、打開開始菜單中的控制面板,然後點擊控制面板中用戶賬戶界面下方的「更改用戶賬戶控制設置」;
「更改用戶賬戶控制設置」
2、接著在打開的控制設置面板中,將下方的按鈕滑動至「從不通知」即可。
按鈕滑動至「從不通知」
方法三、
1.首先打開運行對話框,並輸入「gpedit.msc」,回車打開組策略;
輸入「gpedit.msc」
2.然後在打開的組策略窗口中依次展開「計算機配置-windows配置-安全配置」選項;
展開「計算機配置-windows配置-安全配置」選項
3、然後在窗口右側中找到並雙擊「用戶賬戶控制:值提升簽名並驗證的可執行文件」選項,選擇禁用即可。
雙擊「用戶賬戶控制:值提升簽名並驗證的可執行文件」選項
8、請問伺服器默認返回是什麼格式數據??
$.get(url,function(data){
$("#result").html(data);
})
不需要參數就不用寫。不要寫上個null。這樣不對。
9、伺服器常見頁面訪問返回錯誤信息(404 500 400)表示什麼意思
具體意思如下:
1、404 Not Found
請求失敗,請求所希望得到的資源未被在伺服器上發現。沒有信息能夠告訴用戶這個狀況到底是暫時的還是永久的。假如伺服器知道情況的話,應當使用410狀態碼來告知舊資源因為某些內部的配置機制問題,已經永久的不可用,而且沒有任何可以跳轉的地址。
404這個狀態碼被廣泛應用於當伺服器不想揭示到底為何請求被拒絕或者沒有其他適合的響應可用的情況下。出現這個錯誤的最有可能的原因是伺服器端沒有這個頁面。
2、500 Internal Server Error
伺服器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在伺服器端的源代碼出現錯誤時出現。
3、400 Bad Request
(1)語義有誤,當前請求無法被伺服器理解。除非進行修改,否則客戶端不應該重復提交這個請求。
(2)請求參數有誤。
其他錯誤信息常見HTTP狀態碼:
401 Unauthorized
當前請求需要用戶驗證。該響應必須包含一個適用於被請求資源的 WWW-Authenticate 信息頭用以詢問用戶信息。客戶端可以重復提交一個包含恰當的 Authorization 頭信息的請求。
如果當前請求已經包含了 Authorization 證書,那麼401響應代表著伺服器驗證已經拒絕了那些證書。
如果401響應包含了與前一個響應相同的身份驗證詢問,且瀏覽器已經至少嘗試了一次驗證,那麼瀏覽器應當向用戶展示響應中包含的實體信息,因為這個實體信息中可能包含了相關診斷信息。
402 Payment Required
該狀態碼是為了將來可能的需求而預留的。
403 Forbidden
伺服器已經理解請求,但是拒絕執行它。與401響應不同的是,身份驗證並不能提供任何幫助,而且這個請求也不應該被重復提交。如果這不是一個 HEAD 請求,而且伺服器希望能夠講清楚為何請求不能被執行,那麼就應該在實體內描述拒絕的原因。
當然伺服器也可以返回一個404響應,假如它不希望讓客戶端獲得任何信息。
參考資料:網路-HTTP狀態碼