JQuery POST проблема с базовой HREF - PullRequest
0 голосов
/ 13 ноября 2011

Я должен использовать <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;
    });     

});

Когда я удаляю тег base href, он работает просто отлично, когда я его использую (и я повторяю, я должен его использовать), вышеуказанная функция jQuery перестает работать. Он не выдает никакой ошибки, просто не передает никакого значения в файл mail.php и не возвращает никакого результата.

Как я могу исправить эту проблему jQuery с тегом base href?

Спасибо.

1 Ответ

2 голосов
/ 13 ноября 2011

Я думаю, что вы не переписываете свою строку запроса при переписывании.URL теперь будет примерно таким, поскольку типом по умолчанию для jQuery $ .post является метод GET:

mysiste.com/it/?param1=value1 

Вы можете использовать тип: "post" в jQuery, чтобы не использовать строку запроса.

RewriteRule, если вы хотите сохранить свой метод GET, должен выглядеть примерно так:

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