基础href的jQuery POST问题

时间:2011-11-13 12:42:08

标签: jquery href base

我必须在我的网站上使用<base href="http://www.mysite.com/it/"/>,因为我使用的是apache mod_rewrite,如果我没有放置基础href标记会导致问题。

但问题现在出现在这个jQuery函数中:

$(document).ready(function(){
    $("#submit_newsletter").click(function(){                                      
        var hasError = false;
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

            var nameVal = $("#name").val();
        if(nameVal == '') {
                        $("#name").addClass("highlightError").delay(4000).queue(function(){
        $(this).removeClass("highlightError");
        $(this).dequeue();
    });
        hasError = true;
                 }

               var subnameVal = $("#subname").val();
        if(subnameVal == '') {
                        $("#subname").addClass("highlightError").delay(4000).queue(function(){
        $(this).removeClass("highlightError");
        $(this).dequeue();
    });
            hasError = true;
        }


        var emailVal = $("#email").val();
        if(emailVal == '') {
            $("#email").addClass("highlightError").delay(4000).queue(function(){
        $(this).removeClass("highlightError");
        $(this).dequeue();
    });

   hasError = true;
        } else if(!emailReg.test(emailVal)) {
                        $("#email").addClass("highlightError").delay(4000).queue(function(){
        $(this).removeClass("highlightError");
        $(this).dequeue();
    });
        hasError = true;
        }


        var messageVal = $("#message").val();
        if(messageVal == '') {
                        $("#message").addClass("highlightError").delay(4000).queue(function(){
        $(this).removeClass("highlightError");
        $(this).dequeue();
    });

            hasError = true;
        }



        if(hasError == false) {
            $.post("mail.php",
                { name: nameVal, subname: subnameVal, email: emailVal, message: messageVal },
                    function(data){
                        $("#results").text("Messaggio Inviato.").delay(4000).queue(function(){
       $("#results").text("")
        $(this).dequeue();
    });

                                                $('#newsletter')[0].reset();

                    }
                 );
        }

        return false;
    });     

});

当我删除基本href标签时它工作得很好,当我使用它时(我重复一遍,我必须使用它)上面的jQuery函数停止工作。 它不会给出任何错误,只是它不会将任何值传递给mail.php文件,也不会返回任何结果。

如何使用基本href标记修复此jQuery问题?

感谢。

1 个答案:

答案 0 :(得分:2)

我认为你不会在重写中重写你的查询字符串。现在,url将是这样的,因为jQuery $ .post默认类型是GET方法:

mysiste.com/it/?param1=value1 

您可以使用以下类型:&#34; post&#34;在jQuery中不使用查询字符串。

如果你想保留你的GET方法,RewriteRule应该是这样的:

RewriteRule ^/it/$ /mail.php [QSA,L]