使用Jquery为ajax请求设置基本URL的最佳方法是什么?

由于phonegap基于本地html文件,因此它不知道远程服务器的基本URL。 我想知道使用jquery为ajax请求设置基本URL的最佳方法是什么? 有人可以提供样品的链接吗?

目前我考虑使用jquery ajax prefilter。

当我处理这个问题时,我只是把这些信息作为数据元素放在标签上。

 ... 

然后用它来构建给定请求的正确URL:

  //If pathOrURL is a relative path (eg /users/1), then we return a qualified // URL, such as http://mydomain.com/users/1 // otherwise, we return the URL as is var qualifyURL = function(pathOrURL) { if (!(new RegExp('^(http(s)?[:]//)','i')).test(pathOrURL)) { return $(document.body).data('base') + pathOrURL; } return pathOrURL; }; //Use this helper function when calling $.ajax $.ajax({ url: qualifyURL(url), ... }); 

这对我使用Phonegap的体验非常有用。 希望这会有所帮助。

这样做的语义正确方法是使用标记:

    

然后像这样检索值(遗憾的是jQuery.ajax()不会自动获取此值):

 $('head base').attr('href'); 

元素参考: http : //www.w3.org/TR/html4/struct/links.html#edef-BASE

两个既定答案都有很大的缺点。 每次发出请求时都要求调用一个函数来按下你的URL是很多额外的输入。 向页面添加基本标记在大多数情况下都很有效,但如果您正在使用SVG进行繁重的工作,则会导致一些麻烦。 这是一个简单的解决方案,可以在不使用基本标记的情况下立即修复所有url。

 var baseUrl = 'http://my.hardcoded.url/'; $.ajaxSetup({ beforeSend: function(xhr, options) { options.url = baseUrl + options.url; } })