【发布时间】: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