【问题标题】:debug help with rare unexpected output in jsjs中罕见的意外输出调试帮助
【发布时间】:2011-09-17 18:10:08
【问题描述】:

我的页面上有以下 javascript,应该生成并转到 url 而不是发布表单:

var tokenList = ["auto", "usate"];
var dirList = [];

function makeUrl(prov, manuf, model, price){
  if (_addToken(prov)){
    _joinTokens();
  }
  if (_addToken(manuf)){
    _addToken(model);
    _joinTokens();
  }
  if (price){
    return _joinDirs() + "?prezzo=" + price;
  }
  return _joinDirs();
}

function _addToken(tok){
  if (tok){
    tokenList.push(tok.replace(/ /g,"_"));
    return true;
  }
  return false;
}
function _joinTokens(){
  dirList.push(tokenList.join('-'));
  tokenList = [];
}
function _joinDirs(){
  if (tokenList){
    _joinTokens();
  }
  var url = '/' + dirList.join('/');
  if (url.charAt(url.length-1) == '/'){
    url = url.slice(0, -1);
  }
  return url;
}

由这段代码触发:

$(document).ready(function(){
  $('#navForm').submit(function() {
    var prov = $("[name=select-provincia]").val();
    var manuf = $("[name=select-marca]").val();
    var model = $("[name=select-modello]").val();
    var price = $("[name=select-prezzo]").val();
    var url = makeUrl(prov, manuf, model, price);
    window.location = url;
    return false;
  });
});

自从我从原始 python 翻译这段代码以来已经有很长时间了。我的服务器日志中偶尔会出现罕见的错误,这些错误显示用户试图访问看起来几乎像两个连接在一起的奇怪 url。我一直无法复制这样的错误,但我最好的猜测是我的 javascript 发生了一些事情。最近两次我收到此错误,我注意到用户使用的是 firefox 3.6 和 iphone。这可能是某种浏览器不兼容吗?我的javascript有什么问题吗?错误只是在用户区吗?

这里是一个错误的 url 示例供参考:

/auto-usate-pesaro_e_urbino/fiat-500//rimini/fiat-500?prezzo=13000

还有两个可能正确的:

/auto-usate-pesaro_e_urbino/fiat-500?prezzo=13000

/auto-usate-rimini/fiat-500?prezzo=13000

欢迎任何不相关的优化代码的建议,因为我不擅长这个。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    不确定是不是这样,但我认为那些奇怪的 URL 可能是将生成的 URL 附加到正在查看的页面的 URL 的结果。您只生成 URL 的路径名部分,不包括协议和主机名 (http://foo.com)——某些浏览器可能将此路径解释为相对于当前路径。尝试在 URL 前添加协议和主机名。

    您可能还想看到这个答案:Setting JavaScript window.location 并按照建议将 URL 写入window.location.href

    【讨论】:

    • 我会试一试,如果幸运的话,我不会再看到这些错误。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    相关资源
    最近更新 更多