带#排除故障的Jquery load()

时间:2013-01-19 02:16:59

标签: jquery

我有一个包含三个输入的页面,color1,color2和color3。 一旦用户输入十六进制值或颜色名称,我需要在#mydiv中加载script.php:

$("#color1").change(function() {
    $("#mydiv").load("script.php?color1=" + this.value + "&color2=" + color2.value + "&color3=" + color3.value + "");
});

我面临的问题是#导致Jquery停在script.php?color1 =并且我想知道除了substring(1)之外是否有机会绕过这个问题(因为我希望用户继续看输入中的#)

感谢您的回答

1 个答案:

答案 0 :(得分:0)

需要使用encodeURIComponent()正确编码值。否则#&这样的字符会破坏事物。因此,您使用this.value代替encodeURIComponent(this.value)

但是,由于你使用jQuery,你有一个更好的方法:data参数接受一个对象,jQuery负责转义。但是,在这种情况下它会切换到POST - 但如果这对你来说不是问题,那么这是最干净的方式:

$("#color1").change(function() {
    $("#mydiv").load("script.php", {
        color1: this.value,
        ...
    });
});