浏览器发送GET而不是POST

时间:2015-11-24 12:58:54

标签: javascript android jquery ajax http

我有一个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()函数?

1 个答案:

答案 0 :(得分:-1)

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