我有一个javascript函数以普通html表单的方式发送帖子请求。这是函数实现:
function sendDirectPost(uri, data) {
var $form = $('<form action="' + withContext(uri) + '" method="POST"></form>');
appendDataToForm($form, data);
$form.submit();
}
function appendDataToForm($form, data) {
var body = $('body');
_.each(data, function (value, key) {
$form.append($('<input type="hidden">')
.attr('name', key)
.attr('value', value));
});
$form.css('display', 'none');
$form.appendTo(body);
return $form;
}
目的是使用javascript模拟提交的简单表单,因此我不必明确地使用javascript应用重定向。
在大多数浏览器中,此功能完成了我的预期。但是在某些情况下它并没有。由于某种原因,它发送GET请求。我没有设法重现它,但从用户代理记录服务显示浏览器是Safari 8.0或Android Web Kit浏览器。也许还有其他一些,但我没有检查所有。
以下是问题: 1.该方法可能存在哪些问题? 2.还有其他方法可以使用javascript实现标准表单提交行为吗?也许使用$ .ajax()函数?