2014-02-28 71 views
0

我有一个JQGrid和搜索过滤器和loadOnce = false。我在网格中搜索记录,我能够看到这个json GET类型在萤火虫。如何获取当前(最新)json获取请求url?

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后申请完成我必须相同PARAMS添加到我的PDF文件的链接。

我尝试

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

输出

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

请帮助我如何得到相同的URL,请。

+0

发布您的JavaScript代码 –

+0

没有jqGrid生成json调用自己? –

+0

它没有任何代码,只是jqgrid库而已。我的要求是如何通过使用jquery或javascirpt在我的javascript代码中获取当前(最新)的json请求url。 – Sun

回答

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问题通过这个代码访问最后取得网址。

+0

,我不能直接或间接地在应用程序中发布。请有其他解决方案... – Sun

+0

@kumarM:这听起来是你需要**设置** URL而不是**获取**它。 – Oleg

0

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

https:,而不是http:在最终解决方案的使用将被推荐过。