如何使用JQuery从HTTP响应中存储会话ID?
问题描述:
我正在向需要验证的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”。我应该如何补救这种情况?
非常感谢!
答
我想过这样的事情:
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。
答
查看结果$("div#data).data("UID",UID)
存储会话ID。 http://forum.jquery.com/topic/data-session-variable-or-cookie。我个人从来没有在客户端使用会话ID,因为会话ID是url的一部分,而不是查询字符串,在java中看到JSESSIONID,看看问号?
在url中的位置。它是在sessionid之后。当会话建立时,你不必处理浏览器发送它。
要澄清,我应该创建一个新的函数getAllResponseHeaders并使用您提到的成功:data,textStatus,jXHR语法?然后,将getReq成功连接成getAllResponseHeaders?谢谢:) – SidC 2011-02-01 00:04:53