0

我的帖子看起来像这样:

var $postResults = $.ajax({
    url: "product/create/setting",
    type: "POST",
    async: false,
    data: { KEY: "datasource.name." + dsname, CLASS: dsclass, URL: dsurl },
        complete : function (xhr, textStatus) {
                console.log(xhr.responseText);
                return xhr.responseText;
            }
});
return $postResults.responseText;

但是,当我监视实际发生的情况时,它会在标题中显示一个 GET,其 URL 为“/”而不是“product/create/setting”。

我把它展示给一位同事,他们说“看起来提交按钮正在拒绝你的现实并替换它自己的提交功能。”

有关如何更好地解决此问题的任何想法?

编辑

这是完整的功能(在 $(document).ready 里面)

function createEnvironmentPrep() {
    $('#createEnvironment').click(function () {
        $('div.zForms').html('');
        $('<div class="home-panel">' +
            '<h2 class="home-panel-header">Create New Environment</h2>' +
                '<form id="submitNewEnvironment">' +
                    '<label class="createlabel" for="envname">Name</label>' +
                    '<input id="envname" name="envname" type="text" size="25" required /><br />' +
                    '<label class="createlabel" for="envpath">Path</label>' +
                    '<input id="envpath" name="envpath" type="text" size="75" /><br />' +
                    '<input id="envsubmit" name="envsubmit" type="submit" class="submit" />' +
                '</form>' +
                '</div>' +
                '<div id="returnmsg"></div>').appendTo('div.zForms');
        $('#envsubmit').click(function(e) {
            e.preventDefault();
            var $inputs = $('#submitNewEnvironment :input');
            var values = {};
            $inputs.each(function() {
                console.log($(this));
                values[this.name] = $(this).val();
            });
            var reqStatus = createEnvironment(values["envname"], values["envpath"]);
                if ( reqStatus === "Setting Updated" ) {
                    window.location.reload();
                } else {
                    $("#returnmsg")
                        .text(reqStatus)
                        .css("display", "block");
                    return this.revert;
                }
        });
    });
    function createEnvironment(envname, envpath) {
        var $postResults = $.ajax({
            url: "zforms/create/setting",
            type: "POST",
            async: false,
            data: { KEY: "report.environment." + envname, NAME: envname, PATH: envpath },
                complete : function (xhr, textStatus) {
                        console.log(xhr.responseText);
                        return xhr.responseText;
                    }
        });
        return $postResults.responseText;
    }
}

据我所知,单击函数对 $('#envsubmit') 的内部分配是在页面加载时发生的,而不是在单击“创建环境”按钮并插入 HTML 时发生的。因此,没有为提交按钮分配单击功能,并且它的行为不符合默认行为。

4

1 回答 1

3

您可能错过了event.preventDefault();,并且表单会自行提交。改用这个:

$('form').submit(function (e) {
    e.preventDefault();
    // whatever you want to do after submit();
})
于 2012-11-06T21:10:34.567 回答