以前沒怎麼仔細的研究過ajax,只是用到了就直接拿過來用,發現了問題再找解決方法.以下是我在找解決問題的過程中的一點小小的總結.
一.談Ajax的Get和Post的區別
Get方式:
用get方式可傳送簡單數據,但大小一般限制在1KB下,數據追加到url中發送(http的header傳送),也就是說,瀏覽器將各個表單欄位元素及其資料依照URL參數的格式附加在請求行中的資源路徑後面。另外最重要的一點是,它會被客戶端的瀏覽器快取起來,那麼,別人就可以從瀏覽器的歷史記錄中,讀取到此客戶的數據,例如帳號和密碼等。因此,在某些情況下,get方法會帶來嚴重的安全性問題。
Post方式:
當使用POST方式時,瀏覽器把各表單欄位元素及其資料作為HTTP訊息的實體內容傳送給Web伺服器,而不是作為URL位址的參數進行傳遞,使用POST方式傳遞的資料量比使用GET方式傳送的資料量大的多。
總之,GET方式傳送資料量小,處理效率高,安全性低,會被緩存,而POST反之。
使用get方式需要注意:
1 對於get請求(或凡涉及url傳遞參數的),被傳遞的參數都要先經encodeURIComponent方法處理.例: var url = "update.php?username=" encodeURIComponent(username) "&content=" encodeURIComponent
(content) "&id=1" ;
使用Post方式需注意:
:
使用Post方式需注意
:
1.設定header的Context-Type為application/x-www-form-urlencode確保伺服器知道實體中有參數變數.通常使用XmlHttpRequest物件的SetRequestHeader("Context-Type","application/x-www-form-urlencoded ;")。例:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
2.參數是名/值一一對應的鍵值對,每對值用&號隔開.如var name=abc&sex=man&age=18,注意var name=update.php?
abc&sex=man&age=18以及var name=?abc&sex=man&age=18的寫法都是錯誤的; 3.參數在Send(參數)方法發送,例: xmlHttp.send(name); 如果是get方式,直接xmlHttp.send(null); 4.伺服器端請求參數區分Get與Post。如果是get方式則$username = $_GET["username"]; 如果是post方式,則$username = $_POST["username"];
Post和Get 方法有以下區別
:
1.Post傳輸資料時,不需要在URL中顯示出來,而Get方法要在URL中顯示。
2.Post傳輸的資料量大,可以達到2M,而Get方法由於受到URL長度的限制,只能傳遞大約1024位元組.
3.Post顧名思義,就是為了將資料傳送到伺服器段,Get就是為了從伺服器段取得資料.而Get之所以也能傳送資料,只是用來設計告訴伺服器,你到底需要什麼樣的資料.Post的資訊作為http請求的內容,而Get是在Http頭部傳輸的。
get 方法用Request.QueryString["strName"]接收
post 方法用Request.Form["strName"] 接收
注意:
雖然兩種提交方式可以統一用Request("strName ")來取得提交數據,但是這樣對程序效率有影響,不建議使用。 一般來說,盡量避免使用Get方式提交表單,因為有可能會導致安全問題
AJAX亂碼問題
產生亂碼的原因:
1、 xtmlhttp 傳回的資料預設的字元編碼是utf-8,如果客戶端頁面是gb2312或其它編碼資料就會產生亂碼2、post方法提交資料預設的字元編碼是utf-8,如果伺服器端是gb2312或其他編碼資料就會產生亂碼
解決方法有
:
1、若客戶端是gb2312編碼,則在伺服器指定輸出流編碼
2、伺服器端和客戶端都使用utf-8編碼
gb2312:header('Content-Type:text/html;charset=GB2312');
utf8:header('Content-Type:text/html;charset=utf -8');
var http_request = false;
函數 makePOSTRequest(url, 參數) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla、Safari、...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
//依照預期的內容類型設定類型
//http_request.overrideMimeType('text/xml');
http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
嘗試 {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('無法建立 XMLHTTP 實例');
回傳錯誤;
}
http_request.onreadystatechange =alertContents;
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length",parameters.length);
http_request.setRequestHeader("連線", "關閉");
http_request.send(參數);
}
functionertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
//alert(http_request.response);
結果 = http_request.responseText;
document.getElementById('myspan').innerHTML = 結果;
} else {
alert('請求出現問題。');
}
}
}
function get(obj) {
var poststr = "mytextarea1="encodeURI( document.getElementById("mytextarea1").value )
makePOSTRequest('post.php', poststr);
}
function getJsonData(url)
{
返回null;
}
}
function getData(){
var url="BlacklistService.do?datas=" datasvalue;
var result = getJsonData(url);
var result = getJsonData(url);
網路上google找到解決方法:修改使用的XMLHttp的請求為POST,並且把參數和URL分離出來提交。 🎜>
程式碼如下:
function getJsonData(url,para)
{
var ajax = Common.createXMLHttpRequest ();
ajax.open("POST",url,false);
ajax.send(para);
嘗試
function getData(){
var url="BlacklistService.do";
var para="datas=" datasvalue;
var result = getJsonData(url,para);
}
================================
Ajax中的get和post兩種請求方式的異同2008年10月04日星期六下午02:37分析兩種提交方式的異同Ajax中我們經常用到get和post請求.那麼什麼時候用get請求,什麼時候用post方式請求呢? 在做回答前我們首先要了解get和post的差別.
1、 get是把參數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。 post是透過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL位址。用戶看不到這個過程。
2、 對於get方式,伺服器端用Request.QueryString取得變數的值,對於post方式,伺服器端用Request.Form取得提交的資料。兩種方式的參數都可以用Request來取得。
3.get傳送的資料量較小,不能大於2KB。 post傳送的資料量較大,一般被預設為不受限制。但理論上,因伺服器的不同而異.
4、get安全性非常低,post安全性較高。
5、

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境