0

私のPOSTは次のようになります。

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 に答える