JQuery ajaxform URL-параметры - PullRequest
       11

JQuery ajaxform URL-параметры

0 голосов
/ 15 апреля 2011

извините за глупый вопрос ...

мне нужно вычислить параметр "url" ajaxForm () ...

я пишу что-то вроде этого ...

$('#form-domanda').ajaxForm({
    url: function() {
        id = $('#form-domanda input[name=domanda_id]').val()
        if (id > 0) {
            return "url-1.cfm"
        } else {
            return "url-2.cfm"
        }
    }
}); 

но URL принимает только строку: - (

как мне это сделать?

Ответы [ 3 ]

1 голос
/ 15 апреля 2011

Я думаю, тебе здесь не повезло.Похоже, вы хотите изменить цель формы в зависимости от значения одного из элементов формы;рассматриваемое значение не будет известно до тех пор, пока ajaxForm не будет привязано к форме, поэтому трюк Джастина не сработает.

Вы можете использовать beforeSubmit или beforeSerialize хуки, чтобы изменить ajaxForm URL, но в API нет ничего, что позволяло бы вам изменять URL после привязки ajaxForm.Таким образом, хуки вам не нужны.

Вы можете попробовать добавить обработчик отправки в форму;этот обработчик проверяет значение #form-domanda input[name=domanda_id], а затем связывает соответствующий ajaxForm с #form-domanda и вызывает $('#form-domanda').ajaxSubmit() после того, как вы связали ajaxForm.Это может сработать, а может и нет, и, откровенно говоря, это что-то вроде хака.

Я думаю, вам лучше перенести логику domanda_id на сервер, либо в url-1.cfm, либо как угодно.генерирует #form-domanda в первую очередь.

1 голос
/ 30 октября 2012

Для справки, это работает для меня:

$('#form-domanda').ajaxForm({
    beforeSubmit: function(data, form, options) {
        id = form.find('input[name=domanda_id]').val();
        if (id > 0) {
            options["url"] = "url-1.cfm";
        } else {
            options["url"] = "url-2.cfm";
        }
    }
});
1 голос
/ 15 апреля 2011

Попробуйте, чтобы вызвать функцию немедленно:

$('#form-domanda').ajaxForm({
url: function() {
    id = $('#form-domanda input[name=domanda_id]').val()
    if (id > 0) {
        return "url-1.cfm"
    } else {
        return "url-2.cfm"
    }()
}
}); 
...