2011-01-31 65 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之后。当会话建立时,你不必处理浏览器发送它。