Как отправить форму и остаться на той же странице - PullRequest
0 голосов
/ 15 ноября 2011

Есть похожий вопрос, который демонстрирует, как это сделать в jQuery. К сожалению, я использую прототип, и перевод кода не очень прост.

Отправить форму и остаться на той же странице?

Что должно произойти, так это то, что значение (электронная почта) публикуется на странице субдомена, и пользователь не перенаправляется. У меня нет никакого контроля, чтобы редактировать страницу на поддомене.

Любая помощь будет принята с благодарностью.

function submitEmailForm(){
        var userEmail = $('Text').value;
        $('EmailForm').action = 'http://subDomain.myDomain.com/?email_address='+userEmail;
        $('EmailForm').request({ onComplete: function(){ return false;} });
    }

<form method="post" id="EmailForm" onsubmit="submitMobileEmailForm(); return false;">
          <input type="text" id="Text"/>
          <input type="submit" id="Submit" value=""/>
</form>

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

Вы можете смоделировать отправку формы с помощью AJAX.

(Примечание: я использовал старый проект, над которым работал, как шаблон, поэтому некоторые используемые мной методы могут быть немного старыми. Например, обработка событий может работать иначе.)

function ajaxFormSubmission(form)
{
    xhrThingy = yourFunctionForObtainingXMLHttpRequestInstance();// XHR support is different for various browsers, so you might need to have browser specific code.
    xhrThingy.onreadystatechange = eventHandlerHere;
    xhrThingy.open('POST', 'theFileThatWillHandleYourRequest.php', true);// The used arguments are: HTTP request Method, request url, asynchronous flag
    xhrThingy.setRequestHeader("Content-type", "application/x-www-form-urlencoded");// Simulating Form Submission


    var emailData = form.elements['Text'].value;// Extracting needed data from form
    var postData = "emailAddress=" + emailData;
    xhrThingy.send(postData);
}

Функция eventHandlerHere может затем проверить ответ. Как то так:

function eventHandlerHere()
{
    if (xhrThingy.readyState==4 && xhrThingy.status==200)
    {
        var response = xhrThingy.responseText
        // Do whatever you need to do with the email adress
    }
}

В проекте, над которым я работал, я использовал вложенный метод для быстрого прототипирования, поэтому ваша точная реализация будет выглядеть иначе. Например, я ссылаюсь на xhrThingy, который находится только в области видимости, потому что функция была вложена в функцию ajaxFormSubmission.

1 голос
/ 15 ноября 2011

Вам нужно перенаправить его на ту же страницу по нажатию кнопки на JQuery.

http://www.webdeveloper.com/forum/archive/index.php/t-105181.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...