如何获取当前(最新)JSON获取请求URL?

时间:2014-02-28 08:32:14

标签: javascript jquery json jqgrid

我有一个JQGrid和搜索过滤器以及loadOnce=false。我在网格中搜索记录,我能够在firebug中看到这个json GET类型。

http://localhost:8080/myapp/items/listGrid?ticketId=&_search=true&nd=1393573713370&rows=20&page=1&sidx=id&sord=asc&filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22summary%22%2C%22op%22%3A%22cn%22%2C%22data%22%3A%22Test%22%7D%5D%7D

我希望在此请求完成后获取此JSON请求URL我必须在我的pdf链接中添加相同的参数。

我试试

document.URL
window.location.pathname
jQuery("#itemsGrid").jqGrid('getGridParam', 'url');

输出

"localhost:8080/myapp/items/list"
"/myapp/items/list"
"/myapp/items/listGrid?ticketId="

如何获取相同的网址?

2 个答案:

答案 0 :(得分:0)

如果是ajax调用,你可以装饰XMLHttpRequest.prototype.open函数:

var calls = [];

XMLHttpRequest.prototype._originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
   if(method === 'GET') // Only add GET requests
       calls.push(url);
   this._originalOpen(method, url, async, user, password);
}

现在您可以按如下方式访问最后一个获取网址

var lastUrl = calls[calls.length - 1]

this SO问题采用此代码。

答案 1 :(得分:0)

如果您需要追加带有其他参数的网址,则应使用jqGrid的postData参数。我建议将参数定义为函数(如the answer)。如果您需要发送用户凭据信息,那么最好将其放在自定义HTTP标头中,而不是每个人都可以看到的URL。在这种情况下,loadBeforeSend回调的使用将是最佳选择。有关代码示例,请参阅the answerthis one。您还有一个选项是在使用之前使用beforeRequest回调直接修改jqGrid的url参数(请参阅the answer

也建议在最终解决方案中使用https:代替http: