jQuery将params附加到url

Kar*_*lis 10 javascript ajax url jquery param

我喜欢jQuery的$ .ajax()方法允许指定请求url的方式:

{
  url: 'http://domain.com/?param=1',
  data{
    param2: '2'
  }
}
Run Code Online (Sandbox Code Playgroud)

$ .ajax()方法将(可能)在提供的数据上调用$ .param(),并可选择将其附加到提供的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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Kar*_*lis 5

由于其他回复没有回答我的问题,我已经通过$.ajax()调用进行了一些测试,看看它如何将urls与param数据合并.

到目前为止我的发现:

  • 如果url包含a ?,$.ajax()则会附加'&'+$.param(data)
  • 如果没有,那么$.ajax()将追加'?'+$.param(data)

因此,如果我想保持我的url处理函数与$.ajax()它的方式一致,那么它应该类似于以下内容:

  var addParams = function( url, data )
  {
    if ( ! $.isEmptyObject(data) )
    {
      url += ( url.indexOf('?') >= 0 ? '&' : '?' ) + $.param(data);
    }

    return url;
  }
Run Code Online (Sandbox Code Playgroud)

我仍然想知道是否有内置的jQuery方法来执行此操作.