$ .Post с формой отправить - PullRequest
       10

$ .Post с формой отправить

0 голосов
/ 24 декабря 2010

... Некоторая форма отправляется ...

$.("form").submit(function() {<br> saveFormValues($(this), "./../.."; }<br></p> <p>

function saveFormValues(form, path) {<br> var inputs = getFormData(form);<br> var params = createAction("saveFormData", inputs);<br> var url = path + "/scripts/sessions.php";<br> $.post(url, params);<br> }<br>

Странно то, что если я добавлю функцию в
$.post(url, params, function(data) {<br> alert(data); }<br>
Я получаю пустое предупреждение.

В файле scripts / sessions.php у меня есть функция для сохранения любой информации $ _POST в файл, иsessions.php никогда не сохраняет этот вызов saveFormValues.Это никогда не отображается в файл.Но если я продолжу пытаться заставить его сохранить, примерно один раз каждые 15 действительно позволит его сохранить.Это наводит меня на мысль, что формы POST каким-то образом блокируют этот пост сохранения значений.Любая помощь?

Ответы [ 4 ]

0 голосов
/ 24 декабря 2010

Поэтому я решил создать ассоциативный список элементов, которые не будут сохранены из формы.

$nosave = array("password" => true, "confirmPassword" => true, "descriptionCount" => true, "detailedDescriptionCount" => true, "submit" => true, "action" => true, "p" => true); //Then i decided to go through the $_POST information and save it to the SESSION info.<br> foreach ($_POST as $key => $value) {<br> if ($key != $id && !array_key_exists($key, $nosave)) {<br> //saves the value to the form.<br> $_SESSION[$id][$key] = $value;<br> }<br> }<br></p> <p>//The $id is a hidden input.. name="formId" value="someUniqueId" That way whenever<br> //the form info is saved, its saved under a unique area and can be easily unset.<br>

делать это через jQuery, я просто вызвал функцию, которая примерно делает все это в моем файле sessions.php.

0 голосов
/ 24 декабря 2010

добавьте return false; к функции отправки, чтобы запретить отправку формы:

$.("form").submit(function() {
saveFormValues($(this), "./../.."); return false });

UPDATE:

если вы хотите отправить форму позже, сохраните переменную, чтобы указать, можно ли ее отправить:

var canSubmit = false;
$.("form").submit(function() {
    if(!canSubmit)
    {
        saveFormValues($(this), "./../..");
        return false;
    }
});

и позже:

$.post(url, params, function(data) {
    alert(data); 
    canSubmit = true; 
    $.("form").submit();
}
0 голосов
/ 24 декабря 2010

Поэтому вместо $ .post я попытался создать $ .ajax с asynch, установленным в false. Он сохраняет значения формы каждые ... как 3/5 раз ... какие-либо новые предложения?

0 голосов
/ 24 декабря 2010

Вам необходимо отменить исходную отправку, вернув false из обработчика. Обновление : если вы хотите, чтобы исходная отправка формы продолжалась, вы можете удалить обработчик и повторно отправить форму из обратного вызова.

$.("form").submit(function() {
    saveFormValues($(this), "./../..");
    return false; // cancels original submit and allows AJAX post to complete
});

function saveFormValues(form, path) {
    var inputs = getFormData(form);
    var params = createAction("saveFormData", inputs);
    var url = path + "/scripts/sessions.php";
    $.post(url, params, function() {
       $('form').unbind('submit').trigger('submit');
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...