我喜欢 jQuery 的 $.ajax() 方法允许指定请求 url 的方式:
{
url: 'http://domain.com/?param=1',
data{
param2: '2'
}
}
$.ajax() 方法将(可能)对提供的数据调用 $.param() 并可选择将其附加到提供的 URL。
我的问题是:这种类型的 url 操作在 $.ajax() 调用之外可用吗?
例如,我想打开一个弹出窗口,我想用与 $.ajax() 相同的方式构造 URL。
我已经编写了一个执行此操作的函数,但我感觉我正在重新发明轮子并复制 jQuery 的现有函数:
var prepareUrl = function( url, data )
{
var params = $.param( data );
if ( params.length > 0 )
{
// url contains a query string
if ( url.indexOf( '?' ) > -1 )
{
// get last char of url
var lastChar = url.substr( url.length - 1 );
// Append & to the end of url if required
if ( lastChar != '&' && lastChar != '?' )
{
url += '&';
}
}
else // url doesn't contain a query string
{
url += '?';
}
url += params;
}
return url;
}
谢谢!
最佳答案
由于其他回复没有回答我的问题,我对 $.ajax()
调用进行了一些测试,以查看它如何将 url 与参数数据合并。
到目前为止我的发现:
- 如果 url 包含
?
,则$.ajax()
将附加'&'
+$.param(data )
- 如果不是,则
$.ajax()
将附加'?'
+$.param(data)
所以如果我想让我的 url 处理函数与 $.ajax()
的处理方式保持一致,那么它应该像下面这样:
var addParams = function( url, data )
{
if ( ! $.isEmptyObject(data) )
{
url += ( url.indexOf('?') >= 0 ? '&' : '?' ) + $.param(data);
}
return url;
}
我仍然想知道是否有内置的 jQuery 方法来执行此操作。
关于javascript - jQuery 将参数附加到 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28629648/