2011-01-31 49 views
0

我正在向需要驗證的Web服務發出HTTP請求。我的最初請求如下:如何使用JQuery從HTTP響應中存儲會話ID?

function getReq() { 
$.ajax({ 
    type: "GET", 
    url: urlRequest, 
    dataType: jsonp, 
    cache: false, 
    // success: getRates, 
    error: onFaultAjaxRequest, 
    timeout: DEFAULT_TIMEOUT_AJAX_REQUEST 
}); 
} 

urlRequest包含基地址加上我的用戶名和密碼的查詢字符串。導致此請求的HTTP響應包含會話ID。此會話ID用於對Web服務的後續HTTP請求。

如何使用JQuery或其他替代方法捕獲會話ID?

當我用我的貨幣數據收到第二個響應時,如何利用JQuery CSV插件從CSV格式返回的數據創建數組?

感謝, 希德

編輯基於響應迄今爲止,這是我爲我的js文件寫道:

var urlRequest = "http://webrates.truefx.com/rates/connect.html?u=user&p=pass&f=html&q=dfrates" 
var DEFAULT_TIMEOUT_AJAX_REQUEST = 33000; //in milisecond 
var DEFAULT_TIMEOUT_AFTER_SUCCESS_REQUEST = 330; //time after succes request before next request 

function getReq() { 
$.ajax({ 
    type: "GET", 
    url: urlRequest, 
    dataType: jsonp, 
    cache: false, 
    success: getRates, 
    beforeSend: function(xhr){ 
      xhr.withCredentials=true; 
      }, 
    error: onFaultAjaxRequest, 
    timeout: DEFAULT_TIMEOUT_AJAX_REQUEST 
}); 
} 

function getRates(){ 
var tab=jXHR.getAllResponseHeaders(); 
} 

function onFaultAjaxRequest(XMLHttpRequest, textStatus, errorThrown) { 
var t = setTimeout(getReq, DEFAULT_TIMEOUT_AFTER_SUCCESS_REQUEST); 
} 

function onSuccessAjaxRequest(returnData) { 
var obj= getReq; 
var arr=$.makearray(obj); 

}; 

我的index.html頁面如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Welcome to MyDomain.com</title> 
<script type="text/javascript" src="dist/jquery-1.3.2.min.js"></script> 
<script type="text/javascript" src="dist/jquery.jqplot.js"></script> 
<script type="text/javascript" src="js/dfc.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$.jqplot('chartdiv'[onSuccessAjaxRequest]); 
}); 
</script> 
<link rel="stylesheet" type="text/css" href="css/style.css"/> 
</head> 

<body> 
<div id="chartdiv"> 
</div> 
</body> 
</html> 

當我調試index.html時,我收到一個錯誤,指出jqplot插件中的JScript錯誤「No Data Specified」。我應該如何補救這種情況?

非常感謝!

回答

1

我想過這樣的事情:

function getReq() { 
$.ajax({ 
    type: "GET", 
    url: urlRequest, 
    dataType: jsonp, 
    cache: false, 
    success: getRates, 
    beforeSend: function(xhr){ 
      xhr.withCredentials = true; 
     }, 
    error: onFaultAjaxRequest, 
    timeout: DEFAULT_TIMEOUT_AJAX_REQUEST 
}); 
} 


function getRates(data, textStatus, jXHR) { 
    var tab=jXHR.getAllResponseHeaders(); 
    // tab is a string with headers ... 
} 

不過,也有跨域和瀏覽器的問題。例如,firefox 3.5(或jquery)似乎清除了Set-Cookie字段,所以它在javaScript中是空的。連接到其他域時,也必須設置xhr.withCredentials = true。

+0

要澄清,我應該創建一個新的函數getAllResponseHeaders並使用您提到的成功:data,textStatus,jXHR語法?然後,將getReq成功連接成getAllResponseHeaders?謝謝:) – SidC 2011-02-01 00:04:53

0

查看結果$("div#data).data("UID",UID)存儲會話ID。 http://forum.jquery.com/topic/data-session-variable-or-cookie。我個人從來沒有在客戶端使用會話ID,因爲會話ID是url的一部分,而不是查詢字符串,在java中看到JSESSIONID,看看問號?在url中的位置。它是在sessionid之後。當會話建立時,你不必處理瀏覽器發送它。

相關問題