javascript - jQuery 将参数附加到 url

标签 javascript jquery ajax url param

我喜欢 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/

相关文章:

javascript - 调用preventDefault()时AJAX表单重新加载页面

javascript - Node JS Puppeteer 单击没有名称或 ID 的 li 元素

jquery - 将 div 移动到其他父级,因此它继承自该父级

jquery - 如何使 Carousel Bootstrap 3 响应式

jquery - 将 jquery.submit 转换为 ajax 提交

php - 如何使用 AND 和 OR 条件创建 php 标签搜索字段?

javascript - 在没有 MFC 的情况下从 C++ 运行 JavaScript 函数

javascript - 根据条件禁用复选框

jQuery 模态窗口定位

Javascript 在嵌套 Functions() 之间传递数组