С помощью jQuery мы можем моделировать отправку формы:
<form id="form1" method="post">
<input name="key1" value="value1" />
<input name="key2" value="value2" />
</form>
С вызовом функции AJAX:
$.post('', { key1: 'value1', key2: 'value2' }, function() {
// do call back
});
Если мы используем jquery.form.js
$('#form1').ajaxSubmit({
success: function() {
// do call back
}
});
Хорошо, теперь возникает мой вопрос:
У меня нет формы в разметке, и я хочу отправить форму с каким-то динамическим контентом, используя метод POST.
Я хочу сделать вызов функции для имитации процедуры, возможно, что-то вроде:
utils.post('/url', {key1: 'value1', key2: 'value2'});
После этого вызова эффект будет таким же, как и у формы выше, и я отправлю ее естественным образом.
Есть ли хороший способ сделать это?
Если проблема непонятна, я могу сделать уродливый пример, чтобы объяснить, что я хочу:
util.post = function(url, fields) {
var $form = $('<form action="'+url+'" method="post"></form>');
var key, val;
for(key in fields) {
if(fields.hasOwnProperty(key)) {
val = fields[key];
$form.append('<input type="hidden" name="'+key+'" value="'+val+'" />');
}
}
$form.submit();
}
Вышеуказанный метод работает, но я думаю, что это не очень хорошо. Когда поля имеют специальный символ или что-то еще, это может вызвать ошибку.