您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何采用ajax來進行boa服務器下的異步通信的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
主要實現及踩過的坑如下:
1. get 還是 post請求:怎么發請求參見W3School上的ajax教程
推薦一般人沒有前端基礎的人使用get請求,因為只需要在請求的參數做一個字符串拼接就可以完成基本的ajax請求,具體實現可以參照一下這個網址(http://blog.csdn.net/huguohu2006/article/details/7755107),接下來重點講一下post請求,優勢這里我就不多講了,前面的教程里面都有,主要講一下實現方式:
function sender(url, data) { var xhr = createXHR(); if (xhr) { xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { console.log(xhr.responseText); console.log(xhr.responseText.toString()); var returnValue = xhr.responseText.toString(); console.log(returnValue); return returnValue; // firefox下xhr.responseText作為返回值失效的問題 // ie可以利用return來得到值。但firefox則不能,只能在readyState == 4 && status == 200時處理一個函數 // 這個函數應當作為一個參數傳遞入函數。有個奇怪現象你如果去除紅線部分的注釋,firefox又可以取到值。 // 估計是firefox使用ajax取值有個延時造成。 //return xhr.responseText.toString(); } }; xhr.open("post", url, true); // send(string) 僅適用于post請求 xhr.send(data); } else { //XMLHttpRequest對象創建失敗 alert("瀏覽器不支持,請更換瀏覽器!"); } }
利用調用sender函數來實現ajax,函數的兩個參數分別是請求的url和要發送的數據,注意post請求只能發送string類型的數據。如果要發送其他類型的數據建議采用jquery封裝的ajax方法,這里之所以采用原生的ajax方法來發送數據主要有以下幾個原因:
?jquery庫的體積比較大,有可能mount進開發箱上的linux系統時出現失敗的情況,這種情況可以通過mount u盤的方式解決 mount u盤的命令如下: mount -r /dev/uba4 /web -r為mount進文件的讀寫權限,具體可執行搜索查詢,uba4為U盤在linux系統上顯示的名字,web為目標文件夾,使用U盤掛載的缺點在于整個U盤的文件會全部被復制到目標文件夾中,有點綴余
?發送的數據不很多,也沒有其他的類型要求,使用string類型完全可以滿足開發需求,沒必要引入jquery庫增加項目空間
?原生的ajax可以更好地解釋http請求的原理
下面再介紹一下cgi文件對http請求的處理,示例函如下:
#include <stdlib.h> #include <stdio.h> #include <string.h> char* get_cgi_data(FILE* fp, char* method) { char* input; int len; int size=1024; int i=0; if (strcmp(method, "GET") == 0) /**< GET method */ { input = getenv("QUERY_STRING"); return input; } else if (strcmp(method, "POST") == 0) /**< POST method */ { len = atoi(getenv("CONTENT_LENGTH")); input = (char*)malloc(sizeof(char) * (size+1)); if (len == 0) { input[0] = '\0'; return input; } while (1) { input[i] = (char)fgetc(fp); if (i == size) { input[i+1] = '\0'; return input; } --len; if (feof(fp) || (!(len))) { i++; input[i] = '\0'; return input; } i++; } } return NULL; } int main(void) { char* input; char* method; char name[64]; char passwd[64]; int i=0; int j=0; printf("Content-type:text/html\n\n"); printf("The following is query result:"); method = getenv("REQUEST_METHOD"); input = get_cgi_data(stdin, method); printf("string is: %s", input); return 0; }
上面包含了c語言處理兩種請求的方法,get請求比較簡單,直接使用getenv("QUERY_STRING")就可以獲取到請求發送的數據,post請求的處理則比較負責,先獲取請求內容長度,然后根據長度來動態分配一個等長的字符串空間,將發送的數據傳給字符串,然后再根據自己項目的需要進行相應的處理即可。
感謝各位的閱讀!關于“如何采用ajax來進行boa服務器下的異步通信”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。