2012-03-30 5 views
0

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

// On form submission 
$("#profile").submit(function() { 
    submitForm(function(result) { 
     return result; 
    }); 
}); 

function submitForm(callback) { 
    var dept; 
    if (IsEmpty($("input[name=dept_id1]").val())) { 
     dept = $("select[name=dept_id]").val(); 
     $.post("funcs.php", {'dept':dept, op:'select'}, function(d) { 
      callback(true); 
     }); 
    } else { 
     dept = $("input[name=dept_id1]").val(); 
     $.post("funcs.php", {'dept':dept}, function(d) { 
      callback(true); 
     }); 
    } 
} 

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

Коды, которые я вставлял здесь, позволяют отправить форму после функции ajax, но она не вносит никаких изменений на стороне сервера. Спасибо за любую помощь.

+0

Я предполагаю, что вы используете элемент типа 'в качестве кнопки, которая представляет форму? – Hecksa

+0

Да, может это проблема? – Chibuzo

ответ

1

Я рекомендую вам использовать кнопку, а не кнопку отправки в вашей форме в этой ситуации. Если вы используете, например:

<form id="profile">  
Some form fields 
<input type="submit" value="Submit" /> 
</form> 

Тогда рассмотрим вместо делать:

<form id="profile"> 
Some form fields 
<input type="button" onclick="submitForm(submitCallback);" /> 
</form> 

Это предотвратило бы форму с автоматически подачи при нажатии на кнопку. Фактически вы можете отправить форму в функцию обратного вызова, например:

function submitCallback() { 
    $('#profile').submit(); 
} 

Или что-то в этом направлении. Код не проверен, но это должно быть что-то в этом роде.

Редактировать: После этого вы хотите удалить обработчик событий в исходный код для $ ('# profile'). Submit ... иначе вы будете запускать этот файл ajax дважды.

Смежные вопросы