如何模拟xmlhttprequest并获取json响应?
这里答案:
HTTP/1.1 200 OK
Server: nginx/1.1.7
Date: Fri, 06 Jan 2012 10:50:36 GMT
Content-Type: application/x-javascript; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding, Accept-Language,Cookie
Content-Language: ru
Content-Encoding: gzip
此处请求:
GET /community/accounts/?type=table&_=1325847040822&offset=0&limit=25&order_by=name&search=Danzanus&echo=2&id=accounts_index HTTP/1.1
Host: worldoftanks.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
X-Requested-With: XMLHttpRequest
X-CSRFToken: aec8c3f844e930e61e8a1b7f2a51b175
Referer: http://worldoftanks.ru/community/accounts/
Cookie: csrftoken=aec8c3f844e930e61e8a1b7f2a51b175; __utma=1.624357332.1325795055.1325812734.1325847014.4; __utmz=1.1325795055.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); csw_popup=true; csw_top=true; __utmb=1.1.10.1325847014; __utmc=1
网站为http://worldoftanks.com/community/accounts/
我需要获取带有用户个人资料链接的搜索结果。 Firebug(FF插件)显示了这个答案:
{"request_data":{"items":[{"account_url":"/community/accounts/4213704-Danzanus/","abbreviation":"","exp":514111,"name":"Danzanus","clan_url":"","owner":null,"wins":816,"created_at":"2011-11-29","id":4213704,"battles":1626}],"total_count":0,"filtered_count":1,"offset":0,"echo":2},"result":"success"}
我只需要“account_url”。
此代码返回200 OK但是答案为空:
$.get("http://worldoftanks.ru/community/accounts", { type: "table", _: 1325811501451, offset: "0", limit: "25", order_by: "name", search: "Danzanus", echo: "3", id: "accounts_index" },
function (data) {
alert("Data Loaded: " + data);}
谢谢。
答案 0 :(得分:0)
如果这是webservice返回的响应,你可以解析XHR响应(例如在jQuery onsuccess方法中,这是在Ajax调用之后调用的)并获取account_url。 否则,如果要重新创建响应客户端,则应创建表示响应的JS对象,然后将其转换为JSON表示形式。然后,您可以从客户端脚本中调用返回JSON的方法(在本例中为 getMyObjAsJSON )。
这是一个示例
function getMyObj() {
var firstname = 'Michael'
var lastname = 'Jordan'
return { FirstName: firstname, LastName: lastname };}
function getMyObjAsJSON(){
var myObj = getMyObj();
if (myObj == null) {
alert("obj not created");
return;
}
//it converts the object in its JSON rapresentetion
var jsonObj = $.toJSON(myObj);
return jsonObj}