js中罕见的意外输出的调试帮助

debug help with rare unexpected output in js

本文关键字:输出 调试 帮助 意外 js      更新时间:2023-09-26

我的页面上有以下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,这些URL看起来几乎像两个连接的URL。我从来没有复制过这样的错误,但我最好的猜测是我的javascript出现了问题。最近两次我收到这个错误时,我注意到用户使用的是firefox3.6和iphone。这可能是某种浏览器不兼容吗?我的javascript有什么问题吗?错误只是在userland中吗?

这里有一个错误的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

任何与优化代码无关的建议都是受欢迎的,因为我不擅长这一点。

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

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