Ⅰ js 模擬POST提交enctype="multipart/form-data"類型的表單
只是需要文件上傳才用它的
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
改成
xmlHttp.setRequestHeader("Content-Type","multipart/form-data;")。
Ⅱ ajax post請求如何檢查後台是否接受到數據
如果是通過jquery調用ajax,可以根據回調函數來判斷,正常情況下只要success函數被觸發即表示後台已接收到數據。如果是用原生js通過xmlhttp來執行ajax,則可根據返回碼(status)來判斷,通常200表示整個過程完全正常,30x則表示網址經過了重定向,多數情況下也表示正常,40x或者500則表示有錯誤。
Ⅲ 可以在本地的html文件中寫js調用HTTP請求嘛,如果可以請大神寫出具體的js代碼
是可以的 如下
<html>
<head>
<title>XMLHTTPRequest對象的說明DEMO</title>
<script language="javascript" type="text/javascript">
<!--
var xmlhttp;
// 創建一個XMLHTTPRequest對象
function createXMLHTTPRequext(){
if(window.ActiveXObject) {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
else if(window.XMLHTTPRequest){
xmlhttp = new XMLHTTPRequest();
}
}
function PostOrder(xmldoc)
{
alert(xmldoc);
createXMLHTTPRequext();
// 方法:open
// 創建一個新的http請求,並指定此請求的方法、URL以及驗證信息
// 語法:oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
// 參數
// bstrMethod
// http方法,例如:POST、GET、PUT及PROPFIND。大小寫不敏感。
// bstrUrl
// 請求的URL地址,可以為絕對地址也可以為相對地址。
// varAsync[可選]
// 布爾型,指定此請求是否為非同步方式,默認為true。如果為真,當狀態改變時會調用onreadystatechange屬性指定的回調函數。
// bstrUser[可選]
// 如果伺服器需要驗證,此處指定用戶名,如果未指定,當伺服器需要驗證時,會彈出驗證窗口。
// bstrPassword[可選]
// 驗證信息中的密碼部分,如果用戶名為空,則此值將被忽略。
// 備註:調用此方法後,可以調用send方法向伺服器發送數據。
xmlhttp.Open("get", xmldoc, false);
// var book = xmlhttp.responseXML.selectSingleNode("//book[@id='bk101']");
// alert(book.xml);
// 屬性:onreadystatechange
// onreadystatechange:指定當readyState屬性改變時的事件處理句柄
// 語法:oXMLHttpRequest.onreadystatechange = funcMyHandler;
// 如下的例子演示當XMLHTTPRequest對象的readyState屬性改變時調用HandleStateChange函數,
// 當數據接收完畢後(readystate == 4)此頁面上的一個按鈕將被激活
// 備註:此屬性只寫,為W3C文檔對象模型的擴展.
xmlhttp.onreadystatechange= HandleStateChange;
// 方法:send
// 發送請求到http伺服器並接收回應
// 語法:oXMLHttpRequest.send(varBody);
// 參數:varBody (欲通過此請求發送的數據。)
// 備註:此方法的同步或非同步方式取決於open方法中的bAsync參數,如果bAsync == False,此方法將會等待請求完成或者超時時才會返回,如果bAsync == True,此方法將立即返回。
// This method takes one optional parameter, which is the requestBody to use. The acceptable VARIANT input types are BSTR, SAFEARRAY of UI1 (unsigned bytes), IDispatch to an XML Document Object Model (DOM) object, and IStream *. You can use only chunked encoding (for sending) when sending IStream * input types. The component automatically sets the Content-Length header for all but IStream * input types.
// 如果發送的數據為BSTR,則回應被編碼為utf-8, 必須在適當位置設置一個包含charset的文檔類型頭。
// If the input type is a SAFEARRAY of UI1, the response is sent as is without additional encoding. The caller must set a Content-Type header with the appropriate content type.
// 如果發送的數據為XML DOM object,則回應將被編碼為在xml文檔中聲明的編碼,如果在xml文檔中沒有聲明編碼,則使用默認的UTF-8。
// If the input type is an IStream *, the response is sent as is without additional encoding. The caller must set a Content-Type header with the appropriate content type.
xmlhttp.Send(xmldoc);
// 方法:getAllResponseHeaders
// 獲取響應的所有http頭
// 語法:strValue = oXMLHttpRequest.getAllResponseHeaders();
// 備註:每個http頭名稱和值用冒號分割,並以\r\n結束。當send方法完成後才可調用該方法。
//alert(xmlhttp.getAllResponseHeaders());
// 方法:getResponseHeader
// 從響應信息中獲取指定的http頭
// 語法:strValue = oXMLHttpRequest.getResponseHeader(bstrHeader);
// 備註:當send方法成功後才可調用該方法。如果伺服器返回的文檔類型為"text/xml", 則這句話
// xmlhttp.getResponseHeader("Content-Type");將返回字元串"text/xml"。可以使用getAllResponseHeaders方法獲取完整的http頭信息。
//alert(xmlhttp.getResponseHeader("Content-Type")); // 輸出http頭中的Content-Type列:當前web伺服器的版本及名稱。
//document.frmTest.myButton.disabled = true;
// 方法:abort
// 取消當前請求
// 語法:oXMLHttpRequest.abort();
// 備註:調用此方法後,當前請求返回UNINITIALIZED 狀態。
// xmlhttp.abort();
// 方法:setRequestHeader
// 單獨指定請求的某個http頭
// 語法:oXMLHttpRequest.setRequestHeader(bstrHeader, bstrValue);
// 參數:bstrHeader(字元串,頭名稱。)
// bstrValue(字元串,值。)
// 備註:如果已經存在已此名稱命名的http頭,則覆蓋之。此方法必須在open方法後調用。
// xmlhttp.setRequestHeader(bstrHeader, bstrValue);
}
function HandleStateChange()
{
// 屬性:readyState
// 返回XMLHTTP請求的當前狀態
// 語法:lValue = oXMLHttpRequest.readyState;
// 備註:變數,此屬性只讀,狀態用長度為4的整型表示.定義如下:
// 0 (未初始化) 對象已建立,但是尚未初始化(尚未調用open方法)
// 1 (初始化) 對象已建立,尚未調用send方法
// 2 (發送數據) send方法已調用,但是當前的狀態及http頭未知
// 3 (數據傳送中) 已接收部分數據,因為響應及http頭不全,這時通過responseBody和responseText獲取部分數據會出現錯誤,
// 4 (完成) 數據接收完畢,此時可以通過通過responseBody和responseText獲取完整的回應數據
if (xmlhttp.readyState == 4){
document.frmTest.myButton.disabled = false;
// 屬性:responseBody
// 返回某一格式的伺服器響應數據
// 語法:strValue = oXMLHttpRequest.responseBody;
// 備註:變數,此屬性只讀,以unsigned array格式表示直接從伺服器返回的未經解碼的二進制數據。
//alert(xmlhttp.responseBody);
// 屬性:responseStream
// 以Ado Stream對象的形式返回響應信息
// 語法:strValue = oXMLHttpRequest.responseStream;
// 備註:變數,此屬性只讀,以Ado Stream對象的形式返回響應信息。
//alert(xmlhttp.responseStream);
// 屬性:responseText
// 將響應信息作為字元串返回
// 語法:strValue = oXMLHttpRequest.responseText;
// 備註:變數,此屬性只讀,將響應信息作為字元串返回。XMLHTTP嘗試將響應信息解碼為Unicode字元串,
// XMLHTTP默認將響應數據的編碼定為UTF-8,如果伺服器返回的數據帶BOM(byte-order mark),XMLHTTP可
// 以解碼任何UCS-2 (big or little endian)或者UCS-4 數據。注意,如果伺服器返回的是xml文檔,此屬
// 性並不處理xml文檔中的編碼聲明。你需要使用responseXML來處理。
// alert(xmlhttp.responseText);
// 屬性:responseXML
// 將響應信息格式化為Xml Document對象並返回
// 語法:var objDispatch = oXMLHttpRequest.responseXML;
// 備註:變數,此屬性只讀,將響應信息格式化為Xml Document對象並返回。如果響應數據不是有效的XML文檔,
// 此屬性本身不返回XMLDOMParseError,可以通過處理過的DOMDocument對象獲取錯誤信息。
//alert("Result = " + xmlhttp.responseXML.xml);
// 屬性:status
// 返回當前請求的http狀態碼
// 語法:lValue = oXMLHttpRequest.status;
// 返回值:長整形標准http狀態碼,定義如下:
// Number:Description
// 100:Continue
// 101:Switching protocols
// 200:OK
// 201:Created
// 202:Accepted
// 203:Non-Authoritative Information
// 204:No Content
// 205:Reset Content
// 206:Partial Content
// 300:Multiple Choices
// 301:Moved Permanently
// 302:Found
// 303:See Other
// 304:Not Modified
// 305:Use Proxy
// 307:Temporary Redirect
// 400:Bad Request
// 401:Unauthorized
// 402:Payment Required
// 403:Forbidden
// 404:Not Found
// 405:Method Not Allowed
// 406:Not Acceptable
// 407:Proxy Authentication Required
// 408:Request Timeout
// 409:Conflict
// 410:Gone
// 411:Length Required
// 412:Precondition Failed
// 413:Request Entity Too Large
// 414:Request-URI Too Long
// 415:Unsupported Media Type
// 416:Requested Range Not Suitable
// 417:Expectation Failed
// 500:Internal Server Error
// 501:Not Implemented
// 502:Bad Gateway
// 503:Service Unavailable
// 504:Gateway Timeout
// 505:HTTP Version Not Supported
// 備註:長整形,此屬性只讀,返回當前請求的http狀態碼,此屬性僅當數據發送並接收完畢後才可獲取。
alert(xmlhttp.status);
// 屬性:statusText
// 返回當前請求的響應行狀態
// 語法:strValue = oXMLHttpRequest.statusText;
// 備註:字元串,此屬性只讀,以BSTR返回當前請求的響應行狀態,此屬性僅當數據發送並接收完畢後才可獲取。
//alert(xmlhttp.statusText);
}
}
//-->
</script>
</head>
<body>
<form name="frmTest">
<input name="myButton" type="button" value="Click Me" onclick="PostOrder('http://www.eji.com');">
</form>
</body>
</html>
Ⅳ JS發送json格式POST請求有哪些方式
以Ajax方式發送
<scripttype="text/javascript">
一、獲取url所有參數值
functionUS(){
varname,value;
varstr=location.href;
varnum=str.indexOf("?");
str=str.substr(num+1);
vararr=str.split("&");
for(vari=0;i<arr.length;i++){
num=arr[i].indexOf("=");
if(num>0){
name=arr[i].substring(0,num);
value=arr[i].substr(num+1);
this[name]=value;
}
}
}
二、使用JS發送JSON格式的POST請求
varus=newUS();
varxhr=newXMLHttpRequest();
xhr.open("POST","/searchguard/api/v1/auth/login",true);
xhr.setRequestHeader("Content-type","application/json");
xhr.setRequestHeader("kbn-version","5.3.0");
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
window.location.href=us.nextUrl;
}
}
};
xhr.send(JSON.stringify({
"username":us.u,
"password":us.p
}));
</script>
Ⅳ Java實現一個HTTP基於xml的post請求 如何在struts2 action獲取
//用戶名校驗方法
//這個方法是用XMLHTTPRequest對象進行非同步數據交互
var xmlhttp;
function verify(){
//alert(xmlhttp.readyState);
//×××××××××readyState變更0.1.2.3.4
//1.使用dom的方式獲取文本框中的值
//是dom中獲取元素節點的一種方法一個元素節點對應hrml中的一個標簽,如果<input>.value可以獲得一個元素節點的value屬性值
//注意取值.value;否則前台取不到本想取到的值
var userName = document.getElementById("userName").value;
//2.創建xmlhttpRequest對象
//需要針對不同瀏覽器建立不同的代碼
//Window.XMLHttpRequest盡量放置在window.ActiveXObject之前
if(window.XMLHttpRequest){
//針對firefox,mozillar,opera,safari,ie7,ie8
xmlhttp = new XMLHttpRequest();
//修正mozillar瀏覽器的bug語句
if (xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){
//針對的是ie6,ie5.5,ie5
//兩個可以用於創建XMLHTTPRequset對象的控制項名稱,保存在一個js的數組中
//排在前面的版本較新
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0;i<activexName.length;i++){
try{
//取出一個控制項的名進行創建,如果創建成功就停止循環
//如果創建失敗,會拋出異常,然後可以繼續循環,繼續嘗試創建
xmlhttp = new ActiveXObject(activexName[i]);
break;
}catch(e){
}
}
//確認XMLHTTPRequest對象創建成功
}
if (!xmlhttp){
alert("XMLHttpRequest對象創建失敗!!");
return;
}else{
alert("xmlhttp");
}
//2.注冊回調函數
//注冊回調函數時候,只需要函數名,不要加括弧
xmlhttp.onreadystatechange = callback;
////3.設置鏈接信息
////第一個參數表示http的請求方式,支持所有的http請求方式,主要使用個體和post方法
////第二個參數表示請求的url地址,get方式請求的參數也在url中
////第三個參數表示採用非同步還是同步交互方式,true表示非同步
//xmlhttp.open("GET","AJAXXMLServer?name=" + userName,true);
//post請求方式的代碼
xmlhttp.open("POST","AJAXXMLServer",true);
//post方式需要自己設置http請求頭
xmlhttp.setRequestHeader("Content-Tpye","application/x-www-form-urlencoded");
//post方式發送數據
xmlhttp.send("name= " + userName);
////4.發送數據,開始和伺服器端進行交互
////同步方式下,send這句話在伺服器端數據回來後才執行
////非同步方式下,send這句話會立即完成執行
////get方式下的要發送數據都已經在url中了。因此不需要在詞單獨send內容了
//xmlhttp.send(null);
}
//回調函數
function callback(){
//5.接收響應數據
//判斷對象的狀態是交互完成的即為4
if (xmlhttp.readyState == 4){
//判斷http的交互是否成功
if (xmlhttp.status == 200){
//使用responseXML的方式來接受xml數據的dom對象
var domObj = xmlhttp.responseXML;
//<message>是文本信息</message>
//dom利用getElementsByTagName可以根據標簽來獲取元素節點。返回的是一個數組
var messageNodes = domObj.getElementsByTagName("message");
if (messageNodes.length > 0){
//獲取message節點中的文本內容
//註:無效取值用法:::var responseMessage = messageNodes[0].innerHTML;
//首先messaNodes[0]獲取的的是message標簽所獲取的文本信息,即元素節點。
//message標簽中的文本在dom中是message標簽所對應的元素節點的子節點,firstChild可以獲取當前節點的第一個子節點
//通過以下方式就可以獲取到文本內容多對應的節點
var textNode = messageNodes[0].firstChild;
//對於文本節點來說,可以通過nodeValue的方式返迴文本節點的文本內容
var responseMessage = textNode.nodeValue;
alert("-----------------");
//將數據顯示在頁面上
//通過dom的方式找到div標簽所對應的元素節點
var divNode = document.getElementById("result");
//alert(divNode);
//設置元素節點中的html內容
divNode.innerHTML = responseMessage;
}else{
alert("XML數據格式錯誤,原始文本內容為"+ xmlhttp.responseText);
}
}else{
alert("出錯了!");
}
}
}
這樣返回的是一個數據,你看看對你修改成返迴文件有沒有用