【问题标题】:jQuery POST issue with base href基本href的jQuery POST问题
【发布时间】:2011-12-28 00:51:31
【问题描述】:

我必须在我的网站上使用<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 问题?

谢谢。

【问题讨论】:

    标签: jquery href base


    【解决方案1】:

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

    mysiste.com/it/?param1=value1 
    

    您可以在 jQuery 中使用 type : "post" 来不使用查询字符串。

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

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

    【讨论】:

    • 谢谢。一切正常,但不是这个 $("#results").text("Messaggio Inviato.").delay(4000).queue(function(){ $("#results").text("") $(this ).dequeue(); });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2012-09-28
    • 1970-01-01
    • 2011-01-07
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多