浏览器发送GET而不是POST

Browser sends GET instead of POST

本文关键字:POST GET 浏览器      更新时间:2023-09-26

我有一个javascript函数,它以普通html表单的方式发送post请求

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模拟纯格式的post-submit,所以我不必显式地用javascript应用重定向。

在大多数浏览器中,此函数可以实现我所期望的功能。然而,在某些情况下,情况并非如此。出于某种原因,它发送GET请求。我还没有设法复制它,但是日志服务从用户代理显示浏览器是Safari8.0或Android网络工具包浏览器。也许还有其他一些,但我没有全部检查。

以下是问题:1.这种方法可能有什么问题?2.是否有其他方法可以用javascript实现标准的表单提交行为?也许使用$.ajax()函数?

是的,使用$.ajax()甚至$.post()会更好、更安全。如果你想用js发布数据,没有理由用HTML表单。